mirror of
				https://github.com/shivammathur/setup-php.git
				synced 2025-10-31 15:26:23 +07:00 
			
		
		
		
	init
This commit is contained in:
		
							
								
								
									
										513
									
								
								node_modules/optimist/readme.markdown
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										513
									
								
								node_modules/optimist/readme.markdown
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,513 @@ | ||||
| # DEPRECATION NOTICE | ||||
|  | ||||
| I don't want to maintain this module anymore since I just use | ||||
| [minimist](https://npmjs.org/package/minimist), the argument parsing engine, | ||||
| directly instead nowadays. | ||||
|  | ||||
| See [yargs](https://github.com/chevex/yargs) for the modern, pirate-themed | ||||
| successor to optimist. | ||||
|  | ||||
| [](https://github.com/chevex/yargs) | ||||
|  | ||||
| You should also consider [nomnom](https://github.com/harthur/nomnom). | ||||
|  | ||||
| optimist | ||||
| ======== | ||||
|  | ||||
| Optimist is a node.js library for option parsing for people who hate option | ||||
| parsing. More specifically, this module is for people who like all the --bells | ||||
| and -whistlz of program usage but think optstrings are a waste of time. | ||||
|  | ||||
| With optimist, option parsing doesn't have to suck (as much). | ||||
|  | ||||
| [](http://travis-ci.org/substack/node-optimist) | ||||
|  | ||||
| examples | ||||
| ======== | ||||
|  | ||||
| With Optimist, the options are just a hash! No optstrings attached. | ||||
| ------------------------------------------------------------------- | ||||
|  | ||||
| xup.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist').argv; | ||||
|  | ||||
| if (argv.rif - 5 * argv.xup > 7.138) { | ||||
|     console.log('Buy more riffiwobbles'); | ||||
| } | ||||
| else { | ||||
|     console.log('Sell the xupptumblers'); | ||||
| } | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./xup.js --rif=55 --xup=9.52 | ||||
|     Buy more riffiwobbles | ||||
|      | ||||
|     $ ./xup.js --rif 12 --xup 8.1 | ||||
|     Sell the xupptumblers | ||||
|  | ||||
|  | ||||
|  | ||||
| But wait! There's more! You can do short options: | ||||
| ------------------------------------------------- | ||||
|   | ||||
| short.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist').argv; | ||||
| console.log('(%d,%d)', argv.x, argv.y); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./short.js -x 10 -y 21 | ||||
|     (10,21) | ||||
|  | ||||
| And booleans, both long and short (and grouped): | ||||
| ---------------------------------- | ||||
|  | ||||
| bool.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var util = require('util'); | ||||
| var argv = require('optimist').argv; | ||||
|  | ||||
| if (argv.s) { | ||||
|     util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); | ||||
| } | ||||
| console.log( | ||||
|     (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') | ||||
| ); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./bool.js -s | ||||
|     The cat says: meow | ||||
|      | ||||
|     $ ./bool.js -sp | ||||
|     The cat says: meow. | ||||
|  | ||||
|     $ ./bool.js -sp --fr | ||||
|     Le chat dit: miaou. | ||||
|  | ||||
| And non-hypenated options too! Just use `argv._`! | ||||
| ------------------------------------------------- | ||||
|   | ||||
| nonopt.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist').argv; | ||||
| console.log('(%d,%d)', argv.x, argv.y); | ||||
| console.log(argv._); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./nonopt.js -x 6.82 -y 3.35 moo | ||||
|     (6.82,3.35) | ||||
|     [ 'moo' ] | ||||
|      | ||||
|     $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz | ||||
|     (0.54,1.12) | ||||
|     [ 'foo', 'bar', 'baz' ] | ||||
|  | ||||
| Plus, Optimist comes with .usage() and .demand()! | ||||
| ------------------------------------------------- | ||||
|  | ||||
| divide.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .usage('Usage: $0 -x [num] -y [num]') | ||||
|     .demand(['x','y']) | ||||
|     .argv; | ||||
|  | ||||
| console.log(argv.x / argv.y); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|   | ||||
|     $ ./divide.js -x 55 -y 11 | ||||
|     5 | ||||
|      | ||||
|     $ node ./divide.js -x 4.91 -z 2.51 | ||||
|     Usage: node ./divide.js -x [num] -y [num] | ||||
|  | ||||
|     Options: | ||||
|       -x  [required] | ||||
|       -y  [required] | ||||
|  | ||||
|     Missing required arguments: y | ||||
|  | ||||
| EVEN MORE HOLY COW | ||||
| ------------------ | ||||
|  | ||||
| default_singles.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .default('x', 10) | ||||
|     .default('y', 10) | ||||
|     .argv | ||||
| ; | ||||
| console.log(argv.x + argv.y); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./default_singles.js -x 5 | ||||
|     15 | ||||
|  | ||||
| default_hash.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .default({ x : 10, y : 10 }) | ||||
|     .argv | ||||
| ; | ||||
| console.log(argv.x + argv.y); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./default_hash.js -y 7 | ||||
|     17 | ||||
|  | ||||
| And if you really want to get all descriptive about it... | ||||
| --------------------------------------------------------- | ||||
|  | ||||
| boolean_single.js | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .boolean('v') | ||||
|     .argv | ||||
| ; | ||||
| console.dir(argv); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./boolean_single.js -v foo bar baz | ||||
|     true | ||||
|     [ 'bar', 'baz', 'foo' ] | ||||
|  | ||||
| boolean_double.js | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .boolean(['x','y','z']) | ||||
|     .argv | ||||
| ; | ||||
| console.dir([ argv.x, argv.y, argv.z ]); | ||||
| console.dir(argv._); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./boolean_double.js -x -z one two three | ||||
|     [ true, false, true ] | ||||
|     [ 'one', 'two', 'three' ] | ||||
|  | ||||
| Optimist is here to help... | ||||
| --------------------------- | ||||
|  | ||||
| You can describe parameters for help messages and set aliases. Optimist figures | ||||
| out how to format a handy help string automatically. | ||||
|  | ||||
| line_count.js | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .usage('Count the lines in a file.\nUsage: $0') | ||||
|     .demand('f') | ||||
|     .alias('f', 'file') | ||||
|     .describe('f', 'Load a file') | ||||
|     .argv | ||||
| ; | ||||
|  | ||||
| var fs = require('fs'); | ||||
| var s = fs.createReadStream(argv.file); | ||||
|  | ||||
| var lines = 0; | ||||
| s.on('data', function (buf) { | ||||
|     lines += buf.toString().match(/\n/g).length; | ||||
| }); | ||||
|  | ||||
| s.on('end', function () { | ||||
|     console.log(lines); | ||||
| }); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ node line_count.js | ||||
|     Count the lines in a file. | ||||
|     Usage: node ./line_count.js | ||||
|  | ||||
|     Options: | ||||
|       -f, --file  Load a file  [required] | ||||
|  | ||||
|     Missing required arguments: f | ||||
|  | ||||
|     $ node line_count.js --file line_count.js  | ||||
|     20 | ||||
|      | ||||
|     $ node line_count.js -f line_count.js  | ||||
|     20 | ||||
|  | ||||
| methods | ||||
| ======= | ||||
|  | ||||
| By itself, | ||||
|  | ||||
| ````javascript | ||||
| require('optimist').argv | ||||
| ````` | ||||
|  | ||||
| will use `process.argv` array to construct the `argv` object. | ||||
|  | ||||
| You can pass in the `process.argv` yourself: | ||||
|  | ||||
| ````javascript | ||||
| require('optimist')([ '-x', '1', '-y', '2' ]).argv | ||||
| ```` | ||||
|  | ||||
| or use .parse() to do the same thing: | ||||
|  | ||||
| ````javascript | ||||
| require('optimist').parse([ '-x', '1', '-y', '2' ]) | ||||
| ```` | ||||
|  | ||||
| The rest of these methods below come in just before the terminating `.argv`. | ||||
|  | ||||
| .alias(key, alias) | ||||
| ------------------ | ||||
|  | ||||
| Set key names as equivalent such that updates to a key will propagate to aliases | ||||
| and vice-versa. | ||||
|  | ||||
| Optionally `.alias()` can take an object that maps keys to aliases. | ||||
|  | ||||
| .default(key, value) | ||||
| -------------------- | ||||
|  | ||||
| Set `argv[key]` to `value` if no option was specified on `process.argv`. | ||||
|  | ||||
| Optionally `.default()` can take an object that maps keys to default values. | ||||
|  | ||||
| .demand(key) | ||||
| ------------ | ||||
|  | ||||
| If `key` is a string, show the usage information and exit if `key` wasn't | ||||
| specified in `process.argv`. | ||||
|  | ||||
| If `key` is a number, demand at least as many non-option arguments, which show | ||||
| up in `argv._`. | ||||
|  | ||||
| If `key` is an Array, demand each element. | ||||
|  | ||||
| .describe(key, desc) | ||||
| -------------------- | ||||
|  | ||||
| Describe a `key` for the generated usage information. | ||||
|  | ||||
| Optionally `.describe()` can take an object that maps keys to descriptions. | ||||
|  | ||||
| .options(key, opt) | ||||
| ------------------ | ||||
|  | ||||
| Instead of chaining together `.alias().demand().default()`, you can specify | ||||
| keys in `opt` for each of the chainable methods. | ||||
|  | ||||
| For example: | ||||
|  | ||||
| ````javascript | ||||
| var argv = require('optimist') | ||||
|     .options('f', { | ||||
|         alias : 'file', | ||||
|         default : '/etc/passwd', | ||||
|     }) | ||||
|     .argv | ||||
| ; | ||||
| ```` | ||||
|  | ||||
| is the same as | ||||
|  | ||||
| ````javascript | ||||
| var argv = require('optimist') | ||||
|     .alias('f', 'file') | ||||
|     .default('f', '/etc/passwd') | ||||
|     .argv | ||||
| ; | ||||
| ```` | ||||
|  | ||||
| Optionally `.options()` can take an object that maps keys to `opt` parameters. | ||||
|  | ||||
| .usage(message) | ||||
| --------------- | ||||
|  | ||||
| Set a usage message to show which commands to use. Inside `message`, the string | ||||
| `$0` will get interpolated to the current script name or node command for the | ||||
| present script similar to how `$0` works in bash or perl. | ||||
|  | ||||
| .check(fn) | ||||
| ---------- | ||||
|  | ||||
| Check that certain conditions are met in the provided arguments. | ||||
|  | ||||
| If `fn` throws or returns `false`, show the thrown error, usage information, and | ||||
| exit. | ||||
|  | ||||
| .boolean(key) | ||||
| ------------- | ||||
|  | ||||
| Interpret `key` as a boolean. If a non-flag option follows `key` in | ||||
| `process.argv`, that string won't get set as the value of `key`. | ||||
|  | ||||
| If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be | ||||
| `false`. | ||||
|  | ||||
| If `key` is an Array, interpret all the elements as booleans. | ||||
|  | ||||
| .string(key) | ||||
| ------------ | ||||
|  | ||||
| Tell the parser logic not to interpret `key` as a number or boolean. | ||||
| This can be useful if you need to preserve leading zeros in an input. | ||||
|  | ||||
| If `key` is an Array, interpret all the elements as strings. | ||||
|  | ||||
| .wrap(columns) | ||||
| -------------- | ||||
|  | ||||
| Format usage output to wrap at `columns` many columns. | ||||
|  | ||||
| .help() | ||||
| ------- | ||||
|  | ||||
| Return the generated usage string. | ||||
|  | ||||
| .showHelp(fn=console.error) | ||||
| --------------------------- | ||||
|  | ||||
| Print the usage data using `fn` for printing. | ||||
|  | ||||
| .parse(args) | ||||
| ------------ | ||||
|  | ||||
| Parse `args` instead of `process.argv`. Returns the `argv` object. | ||||
|  | ||||
| .argv | ||||
| ----- | ||||
|  | ||||
| Get the arguments as a plain old object. | ||||
|  | ||||
| Arguments without a corresponding flag show up in the `argv._` array. | ||||
|  | ||||
| The script name or node command is available at `argv.$0` similarly to how `$0` | ||||
| works in bash or perl. | ||||
|  | ||||
| parsing tricks | ||||
| ============== | ||||
|  | ||||
| stop parsing | ||||
| ------------ | ||||
|  | ||||
| Use `--` to stop parsing flags and stuff the remainder into `argv._`. | ||||
|  | ||||
|     $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 | ||||
|     { _: [ '-c', '3', '-d', '4' ], | ||||
|       '$0': 'node ./examples/reflect.js', | ||||
|       a: 1, | ||||
|       b: 2 } | ||||
|  | ||||
| negate fields | ||||
| ------------- | ||||
|  | ||||
| If you want to explicity set a field to false instead of just leaving it | ||||
| undefined or to override a default you can do `--no-key`. | ||||
|  | ||||
|     $ node examples/reflect.js -a --no-b | ||||
|     { _: [], | ||||
|       '$0': 'node ./examples/reflect.js', | ||||
|       a: true, | ||||
|       b: false } | ||||
|  | ||||
| numbers | ||||
| ------- | ||||
|  | ||||
| Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to | ||||
| one. This way you can just `net.createConnection(argv.port)` and you can add | ||||
| numbers out of `argv` with `+` without having that mean concatenation, | ||||
| which is super frustrating. | ||||
|  | ||||
| duplicates | ||||
| ---------- | ||||
|  | ||||
| If you specify a flag multiple times it will get turned into an array containing | ||||
| all the values in order. | ||||
|  | ||||
|     $ node examples/reflect.js -x 5 -x 8 -x 0 | ||||
|     { _: [], | ||||
|       '$0': 'node ./examples/reflect.js', | ||||
|         x: [ 5, 8, 0 ] } | ||||
|  | ||||
| dot notation | ||||
| ------------ | ||||
|  | ||||
| When you use dots (`.`s) in argument names, an implicit object path is assumed. | ||||
| This lets you organize arguments into nested objects. | ||||
|  | ||||
|      $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5 | ||||
|      { _: [], | ||||
|        '$0': 'node ./examples/reflect.js', | ||||
|          foo: { bar: { baz: 33 }, quux: 5 } } | ||||
|  | ||||
| short numbers | ||||
| ------------- | ||||
|  | ||||
| Short numeric `head -n5` style argument work too: | ||||
|  | ||||
|     $ node reflect.js -n123 -m456 | ||||
|     { '3': true, | ||||
|       '6': true, | ||||
|       _: [], | ||||
|       '$0': 'node ./reflect.js', | ||||
|       n: 123, | ||||
|       m: 456 } | ||||
|  | ||||
| installation | ||||
| ============ | ||||
|  | ||||
| With [npm](http://github.com/isaacs/npm), just do: | ||||
|     npm install optimist | ||||
|   | ||||
| or clone this project on github: | ||||
|  | ||||
|     git clone http://github.com/substack/node-optimist.git | ||||
|  | ||||
| To run the tests with [expresso](http://github.com/visionmedia/expresso), | ||||
| just do: | ||||
|      | ||||
|     expresso | ||||
|  | ||||
| inspired By | ||||
| =========== | ||||
|  | ||||
| This module is loosely inspired by Perl's | ||||
| [Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). | ||||
		Reference in New Issue
	
	Block a user
	 Shivam Mathur
					Shivam Mathur