node_task 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/node_task/index.js +28 -21
- data/lib/node_task/node_modules/ndjson/cli.js +23 -0
- data/lib/node_task/node_modules/ndjson/collaborators.md +7 -0
- data/lib/node_task/node_modules/ndjson/index.js +30 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/example/parse.js +2 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/index.js +236 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/package.json +71 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/readme.markdown +91 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/all_bool.js +32 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/bool.js +166 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/dash.js +31 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/default_bool.js +35 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/dotted.js +22 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/kv_short.js +16 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/long.js +31 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/num.js +36 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/parse.js +197 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/parse_modified.js +9 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/short.js +67 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/stop_early.js +15 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/unknown.js +102 -0
- data/lib/node_task/node_modules/ndjson/node_modules/minimist/test/whitespace.js +8 -0
- data/lib/node_task/node_modules/ndjson/node_modules/split2/README.md +74 -0
- data/lib/node_task/node_modules/ndjson/node_modules/split2/index.js +83 -0
- data/lib/node_task/node_modules/ndjson/node_modules/split2/package.json +55 -0
- data/lib/node_task/node_modules/ndjson/node_modules/split2/test.js +149 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/README.md +132 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/README.md +15 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/duplex.js +1 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js +89 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js +46 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js +982 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js +210 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js +386 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/README.md +3 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/float.patch +604 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +107 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/package.json +53 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/core-util-is/util.js +106 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/inherits/README.md +42 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits.js +1 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js +23 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/inherits/package.json +50 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/inherits/test.js +25 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/isarray/README.md +54 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/isarray/build/build.js +209 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/isarray/component.json +19 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/isarray/index.js +3 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/isarray/package.json +53 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md +7 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js +221 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +54 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/package.json +70 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/passthrough.js +1 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/readable.js +8 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/transform.js +1 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/readable-stream/writable.js +1 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/xtend/README.md +32 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/xtend/immutable.js +17 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/xtend/mutable.js +15 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/xtend/package.json +88 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/node_modules/xtend/test.js +63 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/package.json +65 -0
- data/lib/node_task/node_modules/ndjson/node_modules/through2/through2.js +96 -0
- data/lib/node_task/node_modules/ndjson/package.json +64 -0
- data/lib/node_task/node_modules/ndjson/readme.md +55 -0
- data/lib/node_task/node_modules/ndjson/test.js +73 -0
- data/lib/node_task/node_task.rb +6 -13
- data/lib/node_task/package.json +2 -3
- metadata +69 -3
@@ -0,0 +1,166 @@
|
|
1
|
+
var parse = require('../');
|
2
|
+
var test = require('tape');
|
3
|
+
|
4
|
+
test('flag boolean default false', function (t) {
|
5
|
+
var argv = parse(['moo'], {
|
6
|
+
boolean: ['t', 'verbose'],
|
7
|
+
default: { verbose: false, t: false }
|
8
|
+
});
|
9
|
+
|
10
|
+
t.deepEqual(argv, {
|
11
|
+
verbose: false,
|
12
|
+
t: false,
|
13
|
+
_: ['moo']
|
14
|
+
});
|
15
|
+
|
16
|
+
t.deepEqual(typeof argv.verbose, 'boolean');
|
17
|
+
t.deepEqual(typeof argv.t, 'boolean');
|
18
|
+
t.end();
|
19
|
+
|
20
|
+
});
|
21
|
+
|
22
|
+
test('boolean groups', function (t) {
|
23
|
+
var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
|
24
|
+
boolean: ['x','y','z']
|
25
|
+
});
|
26
|
+
|
27
|
+
t.deepEqual(argv, {
|
28
|
+
x : true,
|
29
|
+
y : false,
|
30
|
+
z : true,
|
31
|
+
_ : [ 'one', 'two', 'three' ]
|
32
|
+
});
|
33
|
+
|
34
|
+
t.deepEqual(typeof argv.x, 'boolean');
|
35
|
+
t.deepEqual(typeof argv.y, 'boolean');
|
36
|
+
t.deepEqual(typeof argv.z, 'boolean');
|
37
|
+
t.end();
|
38
|
+
});
|
39
|
+
test('boolean and alias with chainable api', function (t) {
|
40
|
+
var aliased = [ '-h', 'derp' ];
|
41
|
+
var regular = [ '--herp', 'derp' ];
|
42
|
+
var opts = {
|
43
|
+
herp: { alias: 'h', boolean: true }
|
44
|
+
};
|
45
|
+
var aliasedArgv = parse(aliased, {
|
46
|
+
boolean: 'herp',
|
47
|
+
alias: { h: 'herp' }
|
48
|
+
});
|
49
|
+
var propertyArgv = parse(regular, {
|
50
|
+
boolean: 'herp',
|
51
|
+
alias: { h: 'herp' }
|
52
|
+
});
|
53
|
+
var expected = {
|
54
|
+
herp: true,
|
55
|
+
h: true,
|
56
|
+
'_': [ 'derp' ]
|
57
|
+
};
|
58
|
+
|
59
|
+
t.same(aliasedArgv, expected);
|
60
|
+
t.same(propertyArgv, expected);
|
61
|
+
t.end();
|
62
|
+
});
|
63
|
+
|
64
|
+
test('boolean and alias with options hash', function (t) {
|
65
|
+
var aliased = [ '-h', 'derp' ];
|
66
|
+
var regular = [ '--herp', 'derp' ];
|
67
|
+
var opts = {
|
68
|
+
alias: { 'h': 'herp' },
|
69
|
+
boolean: 'herp'
|
70
|
+
};
|
71
|
+
var aliasedArgv = parse(aliased, opts);
|
72
|
+
var propertyArgv = parse(regular, opts);
|
73
|
+
var expected = {
|
74
|
+
herp: true,
|
75
|
+
h: true,
|
76
|
+
'_': [ 'derp' ]
|
77
|
+
};
|
78
|
+
t.same(aliasedArgv, expected);
|
79
|
+
t.same(propertyArgv, expected);
|
80
|
+
t.end();
|
81
|
+
});
|
82
|
+
|
83
|
+
test('boolean and alias array with options hash', function (t) {
|
84
|
+
var aliased = [ '-h', 'derp' ];
|
85
|
+
var regular = [ '--herp', 'derp' ];
|
86
|
+
var alt = [ '--harp', 'derp' ];
|
87
|
+
var opts = {
|
88
|
+
alias: { 'h': ['herp', 'harp'] },
|
89
|
+
boolean: 'h'
|
90
|
+
};
|
91
|
+
var aliasedArgv = parse(aliased, opts);
|
92
|
+
var propertyArgv = parse(regular, opts);
|
93
|
+
var altPropertyArgv = parse(alt, opts);
|
94
|
+
var expected = {
|
95
|
+
harp: true,
|
96
|
+
herp: true,
|
97
|
+
h: true,
|
98
|
+
'_': [ 'derp' ]
|
99
|
+
};
|
100
|
+
t.same(aliasedArgv, expected);
|
101
|
+
t.same(propertyArgv, expected);
|
102
|
+
t.same(altPropertyArgv, expected);
|
103
|
+
t.end();
|
104
|
+
});
|
105
|
+
|
106
|
+
test('boolean and alias using explicit true', function (t) {
|
107
|
+
var aliased = [ '-h', 'true' ];
|
108
|
+
var regular = [ '--herp', 'true' ];
|
109
|
+
var opts = {
|
110
|
+
alias: { h: 'herp' },
|
111
|
+
boolean: 'h'
|
112
|
+
};
|
113
|
+
var aliasedArgv = parse(aliased, opts);
|
114
|
+
var propertyArgv = parse(regular, opts);
|
115
|
+
var expected = {
|
116
|
+
herp: true,
|
117
|
+
h: true,
|
118
|
+
'_': [ ]
|
119
|
+
};
|
120
|
+
|
121
|
+
t.same(aliasedArgv, expected);
|
122
|
+
t.same(propertyArgv, expected);
|
123
|
+
t.end();
|
124
|
+
});
|
125
|
+
|
126
|
+
// regression, see https://github.com/substack/node-optimist/issues/71
|
127
|
+
test('boolean and --x=true', function(t) {
|
128
|
+
var parsed = parse(['--boool', '--other=true'], {
|
129
|
+
boolean: 'boool'
|
130
|
+
});
|
131
|
+
|
132
|
+
t.same(parsed.boool, true);
|
133
|
+
t.same(parsed.other, 'true');
|
134
|
+
|
135
|
+
parsed = parse(['--boool', '--other=false'], {
|
136
|
+
boolean: 'boool'
|
137
|
+
});
|
138
|
+
|
139
|
+
t.same(parsed.boool, true);
|
140
|
+
t.same(parsed.other, 'false');
|
141
|
+
t.end();
|
142
|
+
});
|
143
|
+
|
144
|
+
test('boolean --boool=true', function (t) {
|
145
|
+
var parsed = parse(['--boool=true'], {
|
146
|
+
default: {
|
147
|
+
boool: false
|
148
|
+
},
|
149
|
+
boolean: ['boool']
|
150
|
+
});
|
151
|
+
|
152
|
+
t.same(parsed.boool, true);
|
153
|
+
t.end();
|
154
|
+
});
|
155
|
+
|
156
|
+
test('boolean --boool=false', function (t) {
|
157
|
+
var parsed = parse(['--boool=false'], {
|
158
|
+
default: {
|
159
|
+
boool: true
|
160
|
+
},
|
161
|
+
boolean: ['boool']
|
162
|
+
});
|
163
|
+
|
164
|
+
t.same(parsed.boool, false);
|
165
|
+
t.end();
|
166
|
+
});
|
@@ -0,0 +1,31 @@
|
|
1
|
+
var parse = require('../');
|
2
|
+
var test = require('tape');
|
3
|
+
|
4
|
+
test('-', function (t) {
|
5
|
+
t.plan(5);
|
6
|
+
t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
|
7
|
+
t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
|
8
|
+
t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
|
9
|
+
t.deepEqual(
|
10
|
+
parse([ '-b', '-' ], { boolean: 'b' }),
|
11
|
+
{ b: true, _: [ '-' ] }
|
12
|
+
);
|
13
|
+
t.deepEqual(
|
14
|
+
parse([ '-s', '-' ], { string: 's' }),
|
15
|
+
{ s: '-', _: [] }
|
16
|
+
);
|
17
|
+
});
|
18
|
+
|
19
|
+
test('-a -- b', function (t) {
|
20
|
+
t.plan(3);
|
21
|
+
t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
|
22
|
+
t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
|
23
|
+
t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
|
24
|
+
});
|
25
|
+
|
26
|
+
test('move arguments after the -- into their own `--` array', function(t) {
|
27
|
+
t.plan(1);
|
28
|
+
t.deepEqual(
|
29
|
+
parse([ '--name', 'John', 'before', '--', 'after' ], { '--': true }),
|
30
|
+
{ name: 'John', _: [ 'before' ], '--': [ 'after' ] });
|
31
|
+
});
|
@@ -0,0 +1,35 @@
|
|
1
|
+
var test = require('tape');
|
2
|
+
var parse = require('../');
|
3
|
+
|
4
|
+
test('boolean default true', function (t) {
|
5
|
+
var argv = parse([], {
|
6
|
+
boolean: 'sometrue',
|
7
|
+
default: { sometrue: true }
|
8
|
+
});
|
9
|
+
t.equal(argv.sometrue, true);
|
10
|
+
t.end();
|
11
|
+
});
|
12
|
+
|
13
|
+
test('boolean default false', function (t) {
|
14
|
+
var argv = parse([], {
|
15
|
+
boolean: 'somefalse',
|
16
|
+
default: { somefalse: false }
|
17
|
+
});
|
18
|
+
t.equal(argv.somefalse, false);
|
19
|
+
t.end();
|
20
|
+
});
|
21
|
+
|
22
|
+
test('boolean default to null', function (t) {
|
23
|
+
var argv = parse([], {
|
24
|
+
boolean: 'maybe',
|
25
|
+
default: { maybe: null }
|
26
|
+
});
|
27
|
+
t.equal(argv.maybe, null);
|
28
|
+
var argv = parse(['--maybe'], {
|
29
|
+
boolean: 'maybe',
|
30
|
+
default: { maybe: null }
|
31
|
+
});
|
32
|
+
t.equal(argv.maybe, true);
|
33
|
+
t.end();
|
34
|
+
|
35
|
+
})
|
@@ -0,0 +1,22 @@
|
|
1
|
+
var parse = require('../');
|
2
|
+
var test = require('tape');
|
3
|
+
|
4
|
+
test('dotted alias', function (t) {
|
5
|
+
var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
|
6
|
+
t.equal(argv.a.b, 22);
|
7
|
+
t.equal(argv.aa.bb, 22);
|
8
|
+
t.end();
|
9
|
+
});
|
10
|
+
|
11
|
+
test('dotted default', function (t) {
|
12
|
+
var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
|
13
|
+
t.equal(argv.a.b, 11);
|
14
|
+
t.equal(argv.aa.bb, 11);
|
15
|
+
t.end();
|
16
|
+
});
|
17
|
+
|
18
|
+
test('dotted default with no alias', function (t) {
|
19
|
+
var argv = parse('', {default: {'a.b': 11}});
|
20
|
+
t.equal(argv.a.b, 11);
|
21
|
+
t.end();
|
22
|
+
});
|
@@ -0,0 +1,16 @@
|
|
1
|
+
var parse = require('../');
|
2
|
+
var test = require('tape');
|
3
|
+
|
4
|
+
test('short -k=v' , function (t) {
|
5
|
+
t.plan(1);
|
6
|
+
|
7
|
+
var argv = parse([ '-b=123' ]);
|
8
|
+
t.deepEqual(argv, { b: 123, _: [] });
|
9
|
+
});
|
10
|
+
|
11
|
+
test('multi short -k=v' , function (t) {
|
12
|
+
t.plan(1);
|
13
|
+
|
14
|
+
var argv = parse([ '-a=whatever', '-b=robots' ]);
|
15
|
+
t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] });
|
16
|
+
});
|
@@ -0,0 +1,31 @@
|
|
1
|
+
var test = require('tape');
|
2
|
+
var parse = require('../');
|
3
|
+
|
4
|
+
test('long opts', function (t) {
|
5
|
+
t.deepEqual(
|
6
|
+
parse([ '--bool' ]),
|
7
|
+
{ bool : true, _ : [] },
|
8
|
+
'long boolean'
|
9
|
+
);
|
10
|
+
t.deepEqual(
|
11
|
+
parse([ '--pow', 'xixxle' ]),
|
12
|
+
{ pow : 'xixxle', _ : [] },
|
13
|
+
'long capture sp'
|
14
|
+
);
|
15
|
+
t.deepEqual(
|
16
|
+
parse([ '--pow=xixxle' ]),
|
17
|
+
{ pow : 'xixxle', _ : [] },
|
18
|
+
'long capture eq'
|
19
|
+
);
|
20
|
+
t.deepEqual(
|
21
|
+
parse([ '--host', 'localhost', '--port', '555' ]),
|
22
|
+
{ host : 'localhost', port : 555, _ : [] },
|
23
|
+
'long captures sp'
|
24
|
+
);
|
25
|
+
t.deepEqual(
|
26
|
+
parse([ '--host=localhost', '--port=555' ]),
|
27
|
+
{ host : 'localhost', port : 555, _ : [] },
|
28
|
+
'long captures eq'
|
29
|
+
);
|
30
|
+
t.end();
|
31
|
+
});
|
@@ -0,0 +1,36 @@
|
|
1
|
+
var parse = require('../');
|
2
|
+
var test = require('tape');
|
3
|
+
|
4
|
+
test('nums', function (t) {
|
5
|
+
var argv = parse([
|
6
|
+
'-x', '1234',
|
7
|
+
'-y', '5.67',
|
8
|
+
'-z', '1e7',
|
9
|
+
'-w', '10f',
|
10
|
+
'--hex', '0xdeadbeef',
|
11
|
+
'789'
|
12
|
+
]);
|
13
|
+
t.deepEqual(argv, {
|
14
|
+
x : 1234,
|
15
|
+
y : 5.67,
|
16
|
+
z : 1e7,
|
17
|
+
w : '10f',
|
18
|
+
hex : 0xdeadbeef,
|
19
|
+
_ : [ 789 ]
|
20
|
+
});
|
21
|
+
t.deepEqual(typeof argv.x, 'number');
|
22
|
+
t.deepEqual(typeof argv.y, 'number');
|
23
|
+
t.deepEqual(typeof argv.z, 'number');
|
24
|
+
t.deepEqual(typeof argv.w, 'string');
|
25
|
+
t.deepEqual(typeof argv.hex, 'number');
|
26
|
+
t.deepEqual(typeof argv._[0], 'number');
|
27
|
+
t.end();
|
28
|
+
});
|
29
|
+
|
30
|
+
test('already a number', function (t) {
|
31
|
+
var argv = parse([ '-x', 1234, 789 ]);
|
32
|
+
t.deepEqual(argv, { x : 1234, _ : [ 789 ] });
|
33
|
+
t.deepEqual(typeof argv.x, 'number');
|
34
|
+
t.deepEqual(typeof argv._[0], 'number');
|
35
|
+
t.end();
|
36
|
+
});
|
@@ -0,0 +1,197 @@
|
|
1
|
+
var parse = require('../');
|
2
|
+
var test = require('tape');
|
3
|
+
|
4
|
+
test('parse args', function (t) {
|
5
|
+
t.deepEqual(
|
6
|
+
parse([ '--no-moo' ]),
|
7
|
+
{ moo : false, _ : [] },
|
8
|
+
'no'
|
9
|
+
);
|
10
|
+
t.deepEqual(
|
11
|
+
parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
|
12
|
+
{ v : ['a','b','c'], _ : [] },
|
13
|
+
'multi'
|
14
|
+
);
|
15
|
+
t.end();
|
16
|
+
});
|
17
|
+
|
18
|
+
test('comprehensive', function (t) {
|
19
|
+
t.deepEqual(
|
20
|
+
parse([
|
21
|
+
'--name=meowmers', 'bare', '-cats', 'woo',
|
22
|
+
'-h', 'awesome', '--multi=quux',
|
23
|
+
'--key', 'value',
|
24
|
+
'-b', '--bool', '--no-meep', '--multi=baz',
|
25
|
+
'--', '--not-a-flag', 'eek'
|
26
|
+
]),
|
27
|
+
{
|
28
|
+
c : true,
|
29
|
+
a : true,
|
30
|
+
t : true,
|
31
|
+
s : 'woo',
|
32
|
+
h : 'awesome',
|
33
|
+
b : true,
|
34
|
+
bool : true,
|
35
|
+
key : 'value',
|
36
|
+
multi : [ 'quux', 'baz' ],
|
37
|
+
meep : false,
|
38
|
+
name : 'meowmers',
|
39
|
+
_ : [ 'bare', '--not-a-flag', 'eek' ]
|
40
|
+
}
|
41
|
+
);
|
42
|
+
t.end();
|
43
|
+
});
|
44
|
+
|
45
|
+
test('flag boolean', function (t) {
|
46
|
+
var argv = parse([ '-t', 'moo' ], { boolean: 't' });
|
47
|
+
t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
|
48
|
+
t.deepEqual(typeof argv.t, 'boolean');
|
49
|
+
t.end();
|
50
|
+
});
|
51
|
+
|
52
|
+
test('flag boolean value', function (t) {
|
53
|
+
var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
|
54
|
+
boolean: [ 't', 'verbose' ],
|
55
|
+
default: { verbose: true }
|
56
|
+
});
|
57
|
+
|
58
|
+
t.deepEqual(argv, {
|
59
|
+
verbose: false,
|
60
|
+
t: true,
|
61
|
+
_: ['moo']
|
62
|
+
});
|
63
|
+
|
64
|
+
t.deepEqual(typeof argv.verbose, 'boolean');
|
65
|
+
t.deepEqual(typeof argv.t, 'boolean');
|
66
|
+
t.end();
|
67
|
+
});
|
68
|
+
|
69
|
+
test('newlines in params' , function (t) {
|
70
|
+
var args = parse([ '-s', "X\nX" ])
|
71
|
+
t.deepEqual(args, { _ : [], s : "X\nX" });
|
72
|
+
|
73
|
+
// reproduce in bash:
|
74
|
+
// VALUE="new
|
75
|
+
// line"
|
76
|
+
// node program.js --s="$VALUE"
|
77
|
+
args = parse([ "--s=X\nX" ])
|
78
|
+
t.deepEqual(args, { _ : [], s : "X\nX" });
|
79
|
+
t.end();
|
80
|
+
});
|
81
|
+
|
82
|
+
test('strings' , function (t) {
|
83
|
+
var s = parse([ '-s', '0001234' ], { string: 's' }).s;
|
84
|
+
t.equal(s, '0001234');
|
85
|
+
t.equal(typeof s, 'string');
|
86
|
+
|
87
|
+
var x = parse([ '-x', '56' ], { string: 'x' }).x;
|
88
|
+
t.equal(x, '56');
|
89
|
+
t.equal(typeof x, 'string');
|
90
|
+
t.end();
|
91
|
+
});
|
92
|
+
|
93
|
+
test('stringArgs', function (t) {
|
94
|
+
var s = parse([ ' ', ' ' ], { string: '_' })._;
|
95
|
+
t.same(s.length, 2);
|
96
|
+
t.same(typeof s[0], 'string');
|
97
|
+
t.same(s[0], ' ');
|
98
|
+
t.same(typeof s[1], 'string');
|
99
|
+
t.same(s[1], ' ');
|
100
|
+
t.end();
|
101
|
+
});
|
102
|
+
|
103
|
+
test('empty strings', function(t) {
|
104
|
+
var s = parse([ '-s' ], { string: 's' }).s;
|
105
|
+
t.equal(s, '');
|
106
|
+
t.equal(typeof s, 'string');
|
107
|
+
|
108
|
+
var str = parse([ '--str' ], { string: 'str' }).str;
|
109
|
+
t.equal(str, '');
|
110
|
+
t.equal(typeof str, 'string');
|
111
|
+
|
112
|
+
var letters = parse([ '-art' ], {
|
113
|
+
string: [ 'a', 't' ]
|
114
|
+
});
|
115
|
+
|
116
|
+
t.equal(letters.a, '');
|
117
|
+
t.equal(letters.r, true);
|
118
|
+
t.equal(letters.t, '');
|
119
|
+
|
120
|
+
t.end();
|
121
|
+
});
|
122
|
+
|
123
|
+
|
124
|
+
test('string and alias', function(t) {
|
125
|
+
var x = parse([ '--str', '000123' ], {
|
126
|
+
string: 's',
|
127
|
+
alias: { s: 'str' }
|
128
|
+
});
|
129
|
+
|
130
|
+
t.equal(x.str, '000123');
|
131
|
+
t.equal(typeof x.str, 'string');
|
132
|
+
t.equal(x.s, '000123');
|
133
|
+
t.equal(typeof x.s, 'string');
|
134
|
+
|
135
|
+
var y = parse([ '-s', '000123' ], {
|
136
|
+
string: 'str',
|
137
|
+
alias: { str: 's' }
|
138
|
+
});
|
139
|
+
|
140
|
+
t.equal(y.str, '000123');
|
141
|
+
t.equal(typeof y.str, 'string');
|
142
|
+
t.equal(y.s, '000123');
|
143
|
+
t.equal(typeof y.s, 'string');
|
144
|
+
t.end();
|
145
|
+
});
|
146
|
+
|
147
|
+
test('slashBreak', function (t) {
|
148
|
+
t.same(
|
149
|
+
parse([ '-I/foo/bar/baz' ]),
|
150
|
+
{ I : '/foo/bar/baz', _ : [] }
|
151
|
+
);
|
152
|
+
t.same(
|
153
|
+
parse([ '-xyz/foo/bar/baz' ]),
|
154
|
+
{ x : true, y : true, z : '/foo/bar/baz', _ : [] }
|
155
|
+
);
|
156
|
+
t.end();
|
157
|
+
});
|
158
|
+
|
159
|
+
test('alias', function (t) {
|
160
|
+
var argv = parse([ '-f', '11', '--zoom', '55' ], {
|
161
|
+
alias: { z: 'zoom' }
|
162
|
+
});
|
163
|
+
t.equal(argv.zoom, 55);
|
164
|
+
t.equal(argv.z, argv.zoom);
|
165
|
+
t.equal(argv.f, 11);
|
166
|
+
t.end();
|
167
|
+
});
|
168
|
+
|
169
|
+
test('multiAlias', function (t) {
|
170
|
+
var argv = parse([ '-f', '11', '--zoom', '55' ], {
|
171
|
+
alias: { z: [ 'zm', 'zoom' ] }
|
172
|
+
});
|
173
|
+
t.equal(argv.zoom, 55);
|
174
|
+
t.equal(argv.z, argv.zoom);
|
175
|
+
t.equal(argv.z, argv.zm);
|
176
|
+
t.equal(argv.f, 11);
|
177
|
+
t.end();
|
178
|
+
});
|
179
|
+
|
180
|
+
test('nested dotted objects', function (t) {
|
181
|
+
var argv = parse([
|
182
|
+
'--foo.bar', '3', '--foo.baz', '4',
|
183
|
+
'--foo.quux.quibble', '5', '--foo.quux.o_O',
|
184
|
+
'--beep.boop'
|
185
|
+
]);
|
186
|
+
|
187
|
+
t.same(argv.foo, {
|
188
|
+
bar : 3,
|
189
|
+
baz : 4,
|
190
|
+
quux : {
|
191
|
+
quibble : 5,
|
192
|
+
o_O : true
|
193
|
+
}
|
194
|
+
});
|
195
|
+
t.same(argv.beep, { boop : true });
|
196
|
+
t.end();
|
197
|
+
});
|
@@ -0,0 +1,67 @@
|
|
1
|
+
var parse = require('../');
|
2
|
+
var test = require('tape');
|
3
|
+
|
4
|
+
test('numeric short args', function (t) {
|
5
|
+
t.plan(2);
|
6
|
+
t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
|
7
|
+
t.deepEqual(
|
8
|
+
parse([ '-123', '456' ]),
|
9
|
+
{ 1: true, 2: true, 3: 456, _: [] }
|
10
|
+
);
|
11
|
+
});
|
12
|
+
|
13
|
+
test('short', function (t) {
|
14
|
+
t.deepEqual(
|
15
|
+
parse([ '-b' ]),
|
16
|
+
{ b : true, _ : [] },
|
17
|
+
'short boolean'
|
18
|
+
);
|
19
|
+
t.deepEqual(
|
20
|
+
parse([ 'foo', 'bar', 'baz' ]),
|
21
|
+
{ _ : [ 'foo', 'bar', 'baz' ] },
|
22
|
+
'bare'
|
23
|
+
);
|
24
|
+
t.deepEqual(
|
25
|
+
parse([ '-cats' ]),
|
26
|
+
{ c : true, a : true, t : true, s : true, _ : [] },
|
27
|
+
'group'
|
28
|
+
);
|
29
|
+
t.deepEqual(
|
30
|
+
parse([ '-cats', 'meow' ]),
|
31
|
+
{ c : true, a : true, t : true, s : 'meow', _ : [] },
|
32
|
+
'short group next'
|
33
|
+
);
|
34
|
+
t.deepEqual(
|
35
|
+
parse([ '-h', 'localhost' ]),
|
36
|
+
{ h : 'localhost', _ : [] },
|
37
|
+
'short capture'
|
38
|
+
);
|
39
|
+
t.deepEqual(
|
40
|
+
parse([ '-h', 'localhost', '-p', '555' ]),
|
41
|
+
{ h : 'localhost', p : 555, _ : [] },
|
42
|
+
'short captures'
|
43
|
+
);
|
44
|
+
t.end();
|
45
|
+
});
|
46
|
+
|
47
|
+
test('mixed short bool and capture', function (t) {
|
48
|
+
t.same(
|
49
|
+
parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
|
50
|
+
{
|
51
|
+
f : true, p : 555, h : 'localhost',
|
52
|
+
_ : [ 'script.js' ]
|
53
|
+
}
|
54
|
+
);
|
55
|
+
t.end();
|
56
|
+
});
|
57
|
+
|
58
|
+
test('short and long', function (t) {
|
59
|
+
t.deepEqual(
|
60
|
+
parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
|
61
|
+
{
|
62
|
+
f : true, p : 555, h : 'localhost',
|
63
|
+
_ : [ 'script.js' ]
|
64
|
+
}
|
65
|
+
);
|
66
|
+
t.end();
|
67
|
+
});
|
@@ -0,0 +1,15 @@
|
|
1
|
+
var parse = require('../');
|
2
|
+
var test = require('tape');
|
3
|
+
|
4
|
+
test('stops parsing on the first non-option when stopEarly is set', function (t) {
|
5
|
+
var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], {
|
6
|
+
stopEarly: true
|
7
|
+
});
|
8
|
+
|
9
|
+
t.deepEqual(argv, {
|
10
|
+
aaa: 'bbb',
|
11
|
+
_: ['ccc', '--ddd']
|
12
|
+
});
|
13
|
+
|
14
|
+
t.end();
|
15
|
+
});
|