CLI arguments parser for node.js. Javascript port of python's
argparse module
(original version 3.2). That's a full port, except some very rare options,
recorded in issue tracker.
NB. Difference with original.
defaultValue instead of default.argparse.Const.REMAINDER instead of argparse.REMAINDER, andOPTIONAL, ZERO_OR_MORE, and ONE_OR_MOREnargs values '?', '*', '+', respectively), andSUPPRESS.test.js file:
#!/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.
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
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'foo'), a single option (e.g., '-f' or '--foo'), an array['foo']), or an array of options['-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
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.storeTrue and storeFalse - Stores values True and Falseappend - Stores a list, and appends each argument value to the list.appendConst - Stores a list, and appends value, specified by thecount - Counts the number of times a keyword argument occurs. For example,help - Prints a complete help message for all the options in the currentversion - Prints version information and exit. Expects a version=Details in original action guide
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
'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
Copyright (c) 2012 Vitaly Puzrin.
Released under the MIT license. See
LICENSE for details.