• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..21-May-2021-

lib/H03-May-2022-

LICENSEH A D21-May-20211.1 KiB2217

README.mdH A D21-May-20218.2 KiB258198

package.jsonH A D21-May-2021638 3534

README.md

1argparse
2========
3
4[![Build Status](https://secure.travis-ci.org/nodeca/argparse.svg?branch=master)](http://travis-ci.org/nodeca/argparse)
5[![NPM version](https://img.shields.io/npm/v/argparse.svg)](https://www.npmjs.org/package/argparse)
6
7CLI arguments parser for node.js. Javascript port of python's
8[argparse](http://docs.python.org/dev/library/argparse.html) module
9(original version 3.2). That's a full port, except some very rare options,
10recorded in issue tracker.
11
12**NB. Difference with original.**
13
14- Method names changed to camelCase. See [generated docs](http://nodeca.github.com/argparse/).
15- Use `defaultValue` instead of `default`.
16- Use `argparse.Const.REMAINDER` instead of `argparse.REMAINDER`, and
17  similarly for constant values `OPTIONAL`, `ZERO_OR_MORE`, and `ONE_OR_MORE`
18  (aliases for `nargs` values `'?'`, `'*'`, `'+'`, respectively), and
19  `SUPPRESS`.
20
21
22Example
23=======
24
25test.js file:
26
27```javascript
28#!/usr/bin/env node
29'use strict';
30
31var ArgumentParser = require('../lib/argparse').ArgumentParser;
32var parser = new ArgumentParser({
33  version: '0.0.1',
34  addHelp:true,
35  description: 'Argparse example'
36});
37parser.addArgument(
38  [ '-f', '--foo' ],
39  {
40    help: 'foo bar'
41  }
42);
43parser.addArgument(
44  [ '-b', '--bar' ],
45  {
46    help: 'bar foo'
47  }
48);
49parser.addArgument(
50  '--baz',
51  {
52    help: 'baz bar'
53  }
54);
55var args = parser.parseArgs();
56console.dir(args);
57```
58
59Display help:
60
61```
62$ ./test.js -h
63usage: example.js [-h] [-v] [-f FOO] [-b BAR] [--baz BAZ]
64
65Argparse example
66
67Optional arguments:
68  -h, --help         Show this help message and exit.
69  -v, --version      Show program's version number and exit.
70  -f FOO, --foo FOO  foo bar
71  -b BAR, --bar BAR  bar foo
72  --baz BAZ          baz bar
73```
74
75Parse arguments:
76
77```
78$ ./test.js -f=3 --bar=4 --baz 5
79{ foo: '3', bar: '4', baz: '5' }
80```
81
82More [examples](https://github.com/nodeca/argparse/tree/master/examples).
83
84
85ArgumentParser objects
86======================
87
88```
89new ArgumentParser({parameters hash});
90```
91
92Creates a new ArgumentParser object.
93
94**Supported params:**
95
96- ```description``` - Text to display before the argument help.
97- ```epilog``` - Text to display after the argument help.
98- ```addHelp``` - Add a -h/–help option to the parser. (default: true)
99- ```argumentDefault``` - Set the global default value for arguments. (default: null)
100- ```parents``` - A list of ArgumentParser objects whose arguments should also be included.
101- ```prefixChars``` - The set of characters that prefix optional arguments. (default: ‘-‘)
102- ```formatterClass``` - A class for customizing the help output.
103- ```prog``` - The name of the program (default: `path.basename(process.argv[1])`)
104- ```usage``` - The string describing the program usage (default: generated)
105- ```conflictHandler``` - Usually unnecessary, defines strategy for resolving conflicting optionals.
106
107**Not supported yet**
108
109- ```fromfilePrefixChars``` - The set of characters that prefix files from which additional arguments should be read.
110
111
112Details in [original ArgumentParser guide](http://docs.python.org/dev/library/argparse.html#argumentparser-objects)
113
114
115addArgument() method
116====================
117
118```
119ArgumentParser.addArgument(name or flag or [name] or [flags...], {options})
120```
121
122Defines how a single command-line argument should be parsed.
123
124- ```name or flag or [name] or [flags...]``` - Either a positional name
125  (e.g., `'foo'`), a single option (e.g., `'-f'` or `'--foo'`), an array
126  of a single positional name (e.g., `['foo']`), or an array of options
127  (e.g., `['-f', '--foo']`).
128
129Options:
130
131- ```action``` - The basic type of action to be taken when this argument is encountered at the command line.
132- ```nargs```- The number of command-line arguments that should be consumed.
133- ```constant``` - A constant value required by some action and nargs selections.
134- ```defaultValue``` - The value produced if the argument is absent from the command line.
135- ```type``` - The type to which the command-line argument should be converted.
136- ```choices``` - A container of the allowable values for the argument.
137- ```required``` - Whether or not the command-line option may be omitted (optionals only).
138- ```help``` - A brief description of what the argument does.
139- ```metavar``` - A name for the argument in usage messages.
140- ```dest``` - The name of the attribute to be added to the object returned by parseArgs().
141
142Details in [original add_argument guide](http://docs.python.org/dev/library/argparse.html#the-add-argument-method)
143
144
145Action (some details)
146================
147
148ArgumentParser objects associate command-line arguments with actions.
149These actions can do just about anything with the command-line arguments associated
150with them, though most actions simply add an attribute to the object returned by
151parseArgs(). The action keyword argument specifies how the command-line arguments
152should be handled. The supported actions are:
153
154- ```store``` - Just stores the argument’s value. This is the default action.
155- ```storeConst``` - Stores value, specified by the const keyword argument.
156  (Note that the const keyword argument defaults to the rather unhelpful None.)
157  The 'storeConst' action is most commonly used with optional arguments, that
158  specify some sort of flag.
159- ```storeTrue``` and ```storeFalse``` - Stores values True and False
160  respectively. These are special cases of 'storeConst'.
161- ```append``` - Stores a list, and appends each argument value to the list.
162  This is useful to allow an option to be specified multiple times.
163- ```appendConst``` - Stores a list, and appends value, specified by the
164  const keyword argument to the list. (Note, that the const keyword argument defaults
165  is None.) The 'appendConst' action is typically used when multiple arguments need
166  to store constants to the same list.
167- ```count``` - Counts the number of times a keyword argument occurs. For example,
168  used for increasing verbosity levels.
169- ```help``` - Prints a complete help message for all the options in the current
170  parser and then exits. By default a help action is automatically added to the parser.
171  See ArgumentParser for details of how the output is created.
172- ```version``` - Prints version information and exit. Expects a `version=`
173  keyword argument in the addArgument() call.
174
175Details in [original action guide](http://docs.python.org/dev/library/argparse.html#action)
176
177
178Sub-commands
179============
180
181ArgumentParser.addSubparsers()
182
183Many programs split their functionality into a number of sub-commands, for
184example, the svn program can invoke sub-commands like `svn checkout`, `svn update`,
185and `svn commit`. Splitting up functionality this way can be a particularly good
186idea when a program performs several different functions which require different
187kinds of command-line arguments. `ArgumentParser` supports creation of such
188sub-commands with `addSubparsers()` method. The `addSubparsers()` method is
189normally called with no arguments and returns an special action object.
190This object has a single method `addParser()`, which takes a command name and
191any `ArgumentParser` constructor arguments, and returns an `ArgumentParser` object
192that can be modified as usual.
193
194Example:
195
196sub_commands.js
197```javascript
198#!/usr/bin/env node
199'use strict';
200
201var ArgumentParser = require('../lib/argparse').ArgumentParser;
202var parser = new ArgumentParser({
203  version: '0.0.1',
204  addHelp:true,
205  description: 'Argparse examples: sub-commands',
206});
207
208var subparsers = parser.addSubparsers({
209  title:'subcommands',
210  dest:"subcommand_name"
211});
212
213var bar = subparsers.addParser('c1', {addHelp:true});
214bar.addArgument(
215  [ '-f', '--foo' ],
216  {
217    action: 'store',
218    help: 'foo3 bar3'
219  }
220);
221var bar = subparsers.addParser(
222  'c2',
223  {aliases:['co'], addHelp:true}
224);
225bar.addArgument(
226  [ '-b', '--bar' ],
227  {
228    action: 'store',
229    type: 'int',
230    help: 'foo3 bar3'
231  }
232);
233
234var args = parser.parseArgs();
235console.dir(args);
236
237```
238
239Details in [original sub-commands guide](http://docs.python.org/dev/library/argparse.html#sub-commands)
240
241
242Contributors
243============
244
245- [Eugene Shkuropat](https://github.com/shkuropat)
246- [Paul Jacobson](https://github.com/hpaulj)
247
248[others](https://github.com/nodeca/argparse/graphs/contributors)
249
250License
251=======
252
253Copyright (c) 2012 [Vitaly Puzrin](https://github.com/puzrin).
254Released under the MIT license. See
255[LICENSE](https://github.com/nodeca/argparse/blob/master/LICENSE) for details.
256
257
258