chopsticks

    0.6.0 • Public • Published

    Chopsticks

    Installation

    npm install chopsticks --save

    Usage

    chopsticks(args, opts={}) -> argv

    • opts.string
    • opts.boolean
    • opts.alias
    • opts.default
    • opts.stopEarly
    • opts.dash (aka opts['--'])
    • opts.unknown

    minimist-v1.2.0 spec completed.

    New features

    • Emoji support 👍 - can use emoji to short flags.

      node -e 'console.log(require("minimist")(["-🍣👹👺"]))'
      # { _: [], '�': '�👹👺' } 
       
      node -e 'console.log(require("chopsticks")(["-🍣👹👺"]))'
      # { '🍣': true, '👹': true, '👺': true, _: [] } 
    • opts.unknown=true - return the detailed object at argv.unknown.

      parse(['-f', 'true', '--no-foo', 'true', 'noop!', '--', 'huh'], { unknown: true });
      // {
      //   "_": [
      //     "huh"
      //   ],
      //   "unknown": [
      //     Flag { type: 'short', name: 'f', value: 'true' },
      //     Flag { type: 'long', name: 'foo', value: false },
      //     "true",
      //     "noop!"
      //   ]
      // }
    • opts.array - the specified flag takes the following argument continually. (like a npm-run-all)

      // $ node program.js -s cover lint report -s foo bar baz -- huh
      parse(process.argv.slice(2), { array: 's' });
      // {
      //   "_": [
      //     "huh"
      //   ],
      //   "s": [
      //     ['cover', 'lint', 'report'],
      //     ['foo', 'bar', 'baz']
      //   ]
      // }
    • opts.object - if specify flag names, the value of the specify flag is handled as key of the object.

      // $ node program.js -x one --y.two foo -z=three.baz
      parse(process.argv.slice(2), { object: ['x', 'y', 'z'] });
      // {
      //   _: [],
      //   x: {
      //     one: true,
      //   },
      //   y: {
      //     two: 'foo',
      //   },
      //   z: {
      //     three: {
      //       baz: true,
      //     },
      //   },
      // },

      if true, will handle all long flag without equal signs as object (e.g. affects --foo, not -f or --foo=bar)

    • opts.sentence - if true, argument with right-comma/right-period, is defined in "sentence". (like an abigail)

      // $ node program.js lorem. cover, lint, report. 'foo bar', baz. huh -- huh
      parse(process.argv.slice(2), { sentence: true });
      // {
      //   "_": [
      //     "huh",
      //     "huh"
      //   ],
      //   "sentence": [
      //     ['lorem'],
      //     ['cover', 'lint', 'report'],
      //     ['foo bar', 'baz']
      //   ]
      // }
    • Relative Filename Flag - if the flag name begins with a dot(e.g. --./path/to/file), it handled as a flag name.

      // $ node program.js --use-popular-plugin --./my-extra-plugin.js customValue
      parse(process.argv.slice(2));
      // {
      //   'use-popular-plugin': true,
      //   './my-extra-plugin.js': 'customValue',
      //   _: []
      // }
    • opts.nest - if true, recursively parsing the inside of brackets ([]). like a browserify syntax(aka subarg)

      // $ node program.js rawr --beep [ boop -a 3 ] -n4 --robots [ -x 8 -y 6 ]
      parse(process.argv.slice(2), { nest: true });
      // { _: [ 'rawr' ],
      // beep: { _: [ 'boop' ], a: 3 },
      // n: 4,
      // robots: { _: [], x: 8, y: 6 } }

    Stacktrace was broken

    node
    > require('chopsticks')('error')
    # TypeError: args is not an array 
    # at n.u.createClass.value (/path/to/chopsticks/lib/index.js:1:59798) 

    published code is compressed and the source map is provided. sourcemap isn't supported on NodeJS(current v5.10.0). but this resolved in the node-source-map-support.

    npm install source-map-support --save-dev
    import 'source-map-support/register';

    or...

    $ mocha --require source-map-support/register

    you can check the original line number.

    $ node
    require('source-map-support/register');
    require('chopsticks')('error');
    # TypeError: args is not an array 
    #    at n.u.createClass.value (/Users/59naga/Downloads/chopsticks/src/Chopsticks.js:58:13) 

    Development

    Requirement global

    • NodeJS v5.10.0
    • Npm v3.8.3
    git clone https://github.com/59naga/chopsticks
    cd chopsticks
    npm install
     
    npm test

    License

    MIT

    Install

    npm i chopsticks

    DownloadsWeekly Downloads

    20

    Version

    0.6.0

    License

    MIT

    Last publish

    Collaborators

    • avatar