258 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			258 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | argparse | |||
|  | ======== | |||
|  | 
 | |||
|  | [](http://travis-ci.org/nodeca/argparse) | |||
|  | [](https://www.npmjs.org/package/argparse) | |||
|  | 
 | |||
|  | CLI arguments parser for node.js. Javascript port of python's | |||
|  | [argparse](http://docs.python.org/dev/library/argparse.html) module | |||
|  | (original version 3.2). That's a full port, except some very rare options, | |||
|  | recorded in issue tracker. | |||
|  | 
 | |||
|  | **NB. Difference with original.** | |||
|  | 
 | |||
|  | - Method names changed to camelCase. See [generated docs](http://nodeca.github.com/argparse/). | |||
|  | - Use `defaultValue` instead of `default`. | |||
|  | - Use `argparse.Const.REMAINDER` instead of `argparse.REMAINDER`, and | |||
|  |   similarly for constant values `OPTIONAL`, `ZERO_OR_MORE`, and `ONE_OR_MORE` | |||
|  |   (aliases for `nargs` values `'?'`, `'*'`, `'+'`, respectively), and | |||
|  |   `SUPPRESS`. | |||
|  | 
 | |||
|  | 
 | |||
|  | Example | |||
|  | ======= | |||
|  | 
 | |||
|  | test.js file: | |||
|  | 
 | |||
|  | ```javascript | |||
|  | #!/usr/bin/env node
 | |||
|  | 'use strict'; | |||
|  | 
 | |||
|  | var ArgumentParser = require('../lib/argparse').ArgumentParser; | |||
|  | var parser = new ArgumentParser({ | |||
|  |   version: '0.0.1', | |||
|  |   addHelp:true, | |||
|  |   description: 'Argparse example' | |||
|  | }); | |||
|  | parser.addArgument( | |||
|  |   [ '-f', '--foo' ], | |||
|  |   { | |||
|  |     help: 'foo bar' | |||
|  |   } | |||
|  | ); | |||
|  | parser.addArgument( | |||
|  |   [ '-b', '--bar' ], | |||
|  |   { | |||
|  |     help: 'bar foo' | |||
|  |   } | |||
|  | ); | |||
|  | parser.addArgument( | |||
|  |   '--baz', | |||
|  |   { | |||
|  |     help: 'baz bar' | |||
|  |   } | |||
|  | ); | |||
|  | var args = parser.parseArgs(); | |||
|  | console.dir(args); | |||
|  | ``` | |||
|  | 
 | |||
|  | Display help: | |||
|  | 
 | |||
|  | ``` | |||
|  | $ ./test.js -h | |||
|  | usage: example.js [-h] [-v] [-f FOO] [-b BAR] [--baz BAZ] | |||
|  | 
 | |||
|  | Argparse example | |||
|  | 
 | |||
|  | Optional arguments: | |||
|  |   -h, --help         Show this help message and exit. | |||
|  |   -v, --version      Show program's version number and exit. | |||
|  |   -f FOO, --foo FOO  foo bar | |||
|  |   -b BAR, --bar BAR  bar foo | |||
|  |   --baz BAZ          baz bar | |||
|  | ``` | |||
|  | 
 | |||
|  | Parse arguments: | |||
|  | 
 | |||
|  | ``` | |||
|  | $ ./test.js -f=3 --bar=4 --baz 5 | |||
|  | { foo: '3', bar: '4', baz: '5' } | |||
|  | ``` | |||
|  | 
 | |||
|  | More [examples](https://github.com/nodeca/argparse/tree/master/examples). | |||
|  | 
 | |||
|  | 
 | |||
|  | ArgumentParser objects | |||
|  | ====================== | |||
|  | 
 | |||
|  | ``` | |||
|  | new ArgumentParser({parameters hash}); | |||
|  | ``` | |||
|  | 
 | |||
|  | Creates a new ArgumentParser object. | |||
|  | 
 | |||
|  | **Supported params:** | |||
|  | 
 | |||
|  | - ```description``` - Text to display before the argument help. | |||
|  | - ```epilog``` - Text to display after the argument help. | |||
|  | - ```addHelp``` - Add a -h/āhelp option to the parser. (default: true) | |||
|  | - ```argumentDefault``` - Set the global default value for arguments. (default: null) | |||
|  | - ```parents``` - A list of ArgumentParser objects whose arguments should also be included. | |||
|  | - ```prefixChars``` - The set of characters that prefix optional arguments. (default: ā-ā) | |||
|  | - ```formatterClass``` - A class for customizing the help output. | |||
|  | - ```prog``` - The name of the program (default: `path.basename(process.argv[1])`) | |||
|  | - ```usage``` - The string describing the program usage (default: generated) | |||
|  | - ```conflictHandler``` - Usually unnecessary, defines strategy for resolving conflicting optionals. | |||
|  | 
 | |||
|  | **Not supported yet** | |||
|  | 
 | |||
|  | - ```fromfilePrefixChars``` - The set of characters that prefix files from which additional arguments should be read. | |||
|  | 
 | |||
|  | 
 | |||
|  | Details in [original ArgumentParser guide](http://docs.python.org/dev/library/argparse.html#argumentparser-objects) | |||
|  | 
 | |||
|  | 
 | |||
|  | addArgument() method | |||
|  | ==================== | |||
|  | 
 | |||
|  | ``` | |||
|  | ArgumentParser.addArgument(name or flag or [name] or [flags...], {options}) | |||
|  | ``` | |||
|  | 
 | |||
|  | Defines how a single command-line argument should be parsed. | |||
|  | 
 | |||
|  | - ```name or flag or [name] or [flags...]``` - Either a positional name | |||
|  |   (e.g., `'foo'`), a single option (e.g., `'-f'` or `'--foo'`), an array | |||
|  |   of a single positional name (e.g., `['foo']`), or an array of options | |||
|  |   (e.g., `['-f', '--foo']`). | |||
|  | 
 | |||
|  | Options: | |||
|  | 
 | |||
|  | - ```action``` - The basic type of action to be taken when this argument is encountered at the command line. | |||
|  | - ```nargs```- The number of command-line arguments that should be consumed. | |||
|  | - ```constant``` - A constant value required by some action and nargs selections. | |||
|  | - ```defaultValue``` - The value produced if the argument is absent from the command line. | |||
|  | - ```type``` - The type to which the command-line argument should be converted. | |||
|  | - ```choices``` - A container of the allowable values for the argument. | |||
|  | - ```required``` - Whether or not the command-line option may be omitted (optionals only). | |||
|  | - ```help``` - A brief description of what the argument does. | |||
|  | - ```metavar``` - A name for the argument in usage messages. | |||
|  | - ```dest``` - The name of the attribute to be added to the object returned by parseArgs(). | |||
|  | 
 | |||
|  | Details in [original add_argument guide](http://docs.python.org/dev/library/argparse.html#the-add-argument-method) | |||
|  | 
 | |||
|  | 
 | |||
|  | Action (some details) | |||
|  | ================ | |||
|  | 
 | |||
|  | ArgumentParser objects associate command-line arguments with actions. | |||
|  | These actions can do just about anything with the command-line arguments associated | |||
|  | with them, though most actions simply add an attribute to the object returned by | |||
|  | parseArgs(). The action keyword argument specifies how the command-line arguments | |||
|  | should be handled. The supported actions are: | |||
|  | 
 | |||
|  | - ```store``` - Just stores the argumentās value. This is the default action. | |||
|  | - ```storeConst``` - Stores value, specified by the const keyword argument. | |||
|  |   (Note that the const keyword argument defaults to the rather unhelpful None.) | |||
|  |   The 'storeConst' action is most commonly used with optional arguments, that | |||
|  |   specify some sort of flag. | |||
|  | - ```storeTrue``` and ```storeFalse``` - Stores values True and False | |||
|  |   respectively. These are special cases of 'storeConst'. | |||
|  | - ```append``` - Stores a list, and appends each argument value to the list. | |||
|  |   This is useful to allow an option to be specified multiple times. | |||
|  | - ```appendConst``` - Stores a list, and appends value, specified by the | |||
|  |   const keyword argument to the list. (Note, that the const keyword argument defaults | |||
|  |   is None.) The 'appendConst' action is typically used when multiple arguments need | |||
|  |   to store constants to the same list. | |||
|  | - ```count``` - Counts the number of times a keyword argument occurs. For example, | |||
|  |   used for increasing verbosity levels. | |||
|  | - ```help``` - Prints a complete help message for all the options in the current | |||
|  |   parser and then exits. By default a help action is automatically added to the parser. | |||
|  |   See ArgumentParser for details of how the output is created. | |||
|  | - ```version``` - Prints version information and exit. Expects a `version=` | |||
|  |   keyword argument in the addArgument() call. | |||
|  | 
 | |||
|  | Details in [original action guide](http://docs.python.org/dev/library/argparse.html#action) | |||
|  | 
 | |||
|  | 
 | |||
|  | Sub-commands | |||
|  | ============ | |||
|  | 
 | |||
|  | ArgumentParser.addSubparsers() | |||
|  | 
 | |||
|  | Many programs split their functionality into a number of sub-commands, for | |||
|  | example, the svn program can invoke sub-commands like `svn checkout`, `svn update`, | |||
|  | and `svn commit`. Splitting up functionality this way can be a particularly good | |||
|  | idea when a program performs several different functions which require different | |||
|  | kinds of command-line arguments. `ArgumentParser` supports creation of such | |||
|  | sub-commands with `addSubparsers()` method. The `addSubparsers()` method is | |||
|  | normally called with no arguments and returns an special action object. | |||
|  | This object has a single method `addParser()`, which takes a command name and | |||
|  | any `ArgumentParser` constructor arguments, and returns an `ArgumentParser` object | |||
|  | that can be modified as usual. | |||
|  | 
 | |||
|  | Example: | |||
|  | 
 | |||
|  | sub_commands.js | |||
|  | ```javascript | |||
|  | #!/usr/bin/env node
 | |||
|  | 'use strict'; | |||
|  | 
 | |||
|  | var ArgumentParser = require('../lib/argparse').ArgumentParser; | |||
|  | var parser = new ArgumentParser({ | |||
|  |   version: '0.0.1', | |||
|  |   addHelp:true, | |||
|  |   description: 'Argparse examples: sub-commands', | |||
|  | }); | |||
|  | 
 | |||
|  | var subparsers = parser.addSubparsers({ | |||
|  |   title:'subcommands', | |||
|  |   dest:"subcommand_name" | |||
|  | }); | |||
|  | 
 | |||
|  | var bar = subparsers.addParser('c1', {addHelp:true}); | |||
|  | bar.addArgument( | |||
|  |   [ '-f', '--foo' ], | |||
|  |   { | |||
|  |     action: 'store', | |||
|  |     help: 'foo3 bar3' | |||
|  |   } | |||
|  | ); | |||
|  | var bar = subparsers.addParser( | |||
|  |   'c2', | |||
|  |   {aliases:['co'], addHelp:true} | |||
|  | ); | |||
|  | bar.addArgument( | |||
|  |   [ '-b', '--bar' ], | |||
|  |   { | |||
|  |     action: 'store', | |||
|  |     type: 'int', | |||
|  |     help: 'foo3 bar3' | |||
|  |   } | |||
|  | ); | |||
|  | 
 | |||
|  | var args = parser.parseArgs(); | |||
|  | console.dir(args); | |||
|  | 
 | |||
|  | ``` | |||
|  | 
 | |||
|  | Details in [original sub-commands guide](http://docs.python.org/dev/library/argparse.html#sub-commands) | |||
|  | 
 | |||
|  | 
 | |||
|  | Contributors | |||
|  | ============ | |||
|  | 
 | |||
|  | - [Eugene Shkuropat](https://github.com/shkuropat) | |||
|  | - [Paul Jacobson](https://github.com/hpaulj) | |||
|  | 
 | |||
|  | [others](https://github.com/nodeca/argparse/graphs/contributors) | |||
|  | 
 | |||
|  | License | |||
|  | ======= | |||
|  | 
 | |||
|  | Copyright (c) 2012 [Vitaly Puzrin](https://github.com/puzrin). | |||
|  | Released under the MIT license. See | |||
|  | [LICENSE](https://github.com/nodeca/argparse/blob/master/LICENSE) for details. | |||
|  | 
 | |||
|  | 
 |