l0bsterssg

node.js static responsive blog post generator
Log | Files | Refs | README

README.md (8404B)


      1 argparse
      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 
      7 CLI 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,
     10 recorded 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 
     22 Example
     23 =======
     24 
     25 test.js file:
     26 
     27 ```javascript
     28 #!/usr/bin/env node
     29 'use strict';
     30 
     31 var ArgumentParser = require('../lib/argparse').ArgumentParser;
     32 var parser = new ArgumentParser({
     33   version: '0.0.1',
     34   addHelp:true,
     35   description: 'Argparse example'
     36 });
     37 parser.addArgument(
     38   [ '-f', '--foo' ],
     39   {
     40     help: 'foo bar'
     41   }
     42 );
     43 parser.addArgument(
     44   [ '-b', '--bar' ],
     45   {
     46     help: 'bar foo'
     47   }
     48 );
     49 parser.addArgument(
     50   '--baz',
     51   {
     52     help: 'baz bar'
     53   }
     54 );
     55 var args = parser.parseArgs();
     56 console.dir(args);
     57 ```
     58 
     59 Display help:
     60 
     61 ```
     62 $ ./test.js -h
     63 usage: example.js [-h] [-v] [-f FOO] [-b BAR] [--baz BAZ]
     64 
     65 Argparse example
     66 
     67 Optional 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 
     75 Parse arguments:
     76 
     77 ```
     78 $ ./test.js -f=3 --bar=4 --baz 5
     79 { foo: '3', bar: '4', baz: '5' }
     80 ```
     81 
     82 More [examples](https://github.com/nodeca/argparse/tree/master/examples).
     83 
     84 
     85 ArgumentParser objects
     86 ======================
     87 
     88 ```
     89 new ArgumentParser({parameters hash});
     90 ```
     91 
     92 Creates 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 
    112 Details in [original ArgumentParser guide](http://docs.python.org/dev/library/argparse.html#argumentparser-objects)
    113 
    114 
    115 addArgument() method
    116 ====================
    117 
    118 ```
    119 ArgumentParser.addArgument(name or flag or [name] or [flags...], {options})
    120 ```
    121 
    122 Defines 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 
    129 Options:
    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 
    142 Details in [original add_argument guide](http://docs.python.org/dev/library/argparse.html#the-add-argument-method)
    143 
    144 
    145 Action (some details)
    146 ================
    147 
    148 ArgumentParser objects associate command-line arguments with actions.
    149 These actions can do just about anything with the command-line arguments associated
    150 with them, though most actions simply add an attribute to the object returned by
    151 parseArgs(). The action keyword argument specifies how the command-line arguments
    152 should 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 
    175 Details in [original action guide](http://docs.python.org/dev/library/argparse.html#action)
    176 
    177 
    178 Sub-commands
    179 ============
    180 
    181 ArgumentParser.addSubparsers()
    182 
    183 Many programs split their functionality into a number of sub-commands, for
    184 example, the svn program can invoke sub-commands like `svn checkout`, `svn update`,
    185 and `svn commit`. Splitting up functionality this way can be a particularly good
    186 idea when a program performs several different functions which require different
    187 kinds of command-line arguments. `ArgumentParser` supports creation of such
    188 sub-commands with `addSubparsers()` method. The `addSubparsers()` method is
    189 normally called with no arguments and returns an special action object.
    190 This object has a single method `addParser()`, which takes a command name and
    191 any `ArgumentParser` constructor arguments, and returns an `ArgumentParser` object
    192 that can be modified as usual.
    193 
    194 Example:
    195 
    196 sub_commands.js
    197 ```javascript
    198 #!/usr/bin/env node
    199 'use strict';
    200 
    201 var ArgumentParser = require('../lib/argparse').ArgumentParser;
    202 var parser = new ArgumentParser({
    203   version: '0.0.1',
    204   addHelp:true,
    205   description: 'Argparse examples: sub-commands',
    206 });
    207 
    208 var subparsers = parser.addSubparsers({
    209   title:'subcommands',
    210   dest:"subcommand_name"
    211 });
    212 
    213 var bar = subparsers.addParser('c1', {addHelp:true});
    214 bar.addArgument(
    215   [ '-f', '--foo' ],
    216   {
    217     action: 'store',
    218     help: 'foo3 bar3'
    219   }
    220 );
    221 var bar = subparsers.addParser(
    222   'c2',
    223   {aliases:['co'], addHelp:true}
    224 );
    225 bar.addArgument(
    226   [ '-b', '--bar' ],
    227   {
    228     action: 'store',
    229     type: 'int',
    230     help: 'foo3 bar3'
    231   }
    232 );
    233 
    234 var args = parser.parseArgs();
    235 console.dir(args);
    236 
    237 ```
    238 
    239 Details in [original sub-commands guide](http://docs.python.org/dev/library/argparse.html#sub-commands)
    240 
    241 
    242 Contributors
    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 
    250 License
    251 =======
    252 
    253 Copyright (c) 2012 [Vitaly Puzrin](https://github.com/puzrin).
    254 Released under the MIT license. See
    255 [LICENSE](https://github.com/nodeca/argparse/blob/master/LICENSE) for details.
    256 
    257