more greedy argument parser like a minimist!
npm install chopsticks!Chopsticks
---
Installation
---
``bash`
npm install chopsticks --save
Usage
---
-> argv
- [x] opts.boolean
- [x] opts.alias
- [x] opts.default
- [x] opts.stopEarly
- [x] opts.dash (aka opts['--'])
- [x] opts.unknown> minimist-v1.2.0 spec completed.
New features
- [x] Emoji support :+1: - can use emoji to short flags.
`bash
node -e 'console.log(require("minimist")(["-🍣👹👺"]))'
# { _: [], '�': '�👹👺' } node -e 'console.log(require("chopsticks")(["-🍣👹👺"]))'
# { '🍣': true, '👹': true, '👺': true, _: [] }
`- [x]
opts.unknown=true - return the detailed object at argv.unknown.
`js
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!"
// ]
// }
`- [x]
opts.array - the specified flag takes the following argument continually. (like a npm-run-all)
`js
// $ 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']
// ]
// }
`- [x]
opts.object - if specify flag names, the value of the specify flag is handled as key of the object.
`js
// $ 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)- [x]
opts.sentence - if true, argument with right-comma/right-period, is defined in "sentence". (like an abigail)
`js
// $ 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']
// ]
// }
`- [x] Relative Filename Flag - if the flag name begins with a dot(e.g.
--./path/to/file), it handled as a flag name.
`js
// $ 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',
// _: []
// }
`- [x]
opts.nest - if true, recursively parsing the inside of brackets ([]). like a browserify syntax(aka subarg)
`js
// $ 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
---
`bash
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.`bash
npm install source-map-support --save-dev
`
`js
import 'source-map-support/register';
`
or...
`bash
$ mocha --require source-map-support/register
`you can check the original line number.
`bash
$ 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
`bash
git clone https://github.com/59naga/chopsticks
cd chopsticks
npm installnpm test
``License
---
MIT