Skip to content

Commit 14924de

Browse files
ulkensindresorhus
andauthoredOct 19, 2020
Default isMultiple to empty array (#163)
Co-authored-by: Sindre Sorhus <sindresorhus@gmail.com>
1 parent dc7dae4 commit 14924de

File tree

4 files changed

+27
-33
lines changed

4 files changed

+27
-33
lines changed
 

‎index.d.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,13 @@ declare namespace meow {
125125
readonly inferType?: boolean;
126126

127127
/**
128-
Value of `boolean` flags not defined in `argv`. If set to `undefined` the flags not defined in `argv` will be excluded from the result. The `default` value set in `boolean` flags take precedence over `booleanDefault`.
128+
Value of `boolean` flags not defined in `argv`.
129129
130-
__Caution: Explicitly specifying undefined for `booleanDefault` has different meaning from omitting key itself.__
130+
If set to `undefined`, the flags not defined in `argv` will be excluded from the result. The `default` value set in `boolean` flags take precedence over `booleanDefault`.
131+
132+
_Note: If used in conjunction with `isMultiple`, the default flag value is set to `[]`._
133+
134+
__Caution: Explicitly specifying `undefined` for `booleanDefault` has different meaning from omitting key itself.__
131135
132136
@example
133137
```

‎index.js

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ const buildParserFlags = ({flags, booleanDefault}) =>
6868

6969
if (flag.isMultiple) {
7070
flag.type = flag.type ? `${flag.type}-array` : 'array';
71+
flag.default = flag.default || [];
7172
delete flag.isMultiple;
7273
}
7374

‎readme.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,14 @@ Type: `boolean | null | undefined`\
239239
Default: `false`
240240
241241
Value of `boolean` flags not defined in `argv`.
242-
If set to `undefined` the flags not defined in `argv` will be excluded from the result.
242+
243+
If set to `undefined`, the flags not defined in `argv` will be excluded from the result.
243244
The `default` value set in `boolean` flags take precedence over `booleanDefault`.
244245
246+
_Note: If used in conjunction with `isMultiple`, the default flag value is set to `[]`._
247+
248+
__Caution: Explicitly specifying `undefined` for `booleanDefault` has different meaning from omitting key itself.__
249+
245250
Example:
246251
247252
```js

‎test/test.js

+14-30
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,20 @@ test('supports `number` flag type - throws on incorrect default value', t => {
312312
});
313313
});
314314

315+
test('isMultiple - unset flag returns empty array', t => {
316+
t.deepEqual(meow({
317+
argv: [],
318+
flags: {
319+
foo: {
320+
type: 'string',
321+
isMultiple: true
322+
}
323+
}
324+
}).flags, {
325+
foo: []
326+
});
327+
});
328+
315329
test('isMultiple - flag set once returns array', t => {
316330
t.deepEqual(meow({
317331
argv: ['--foo=bar'],
@@ -408,25 +422,6 @@ test('isMultiple - boolean flag is false by default', t => {
408422
});
409423
});
410424

411-
test('isMultiple - flag with `booleanDefault: undefined` => filter out unset boolean args', t => {
412-
t.deepEqual(meow({
413-
argv: ['--foo'],
414-
booleanDefault: undefined,
415-
flags: {
416-
foo: {
417-
type: 'boolean',
418-
isMultiple: true
419-
},
420-
bar: {
421-
type: 'boolean',
422-
isMultiple: true
423-
}
424-
}
425-
}).flags, {
426-
foo: [true]
427-
});
428-
});
429-
430425
test('isMultiple - number flag', t => {
431426
t.deepEqual(meow({
432427
argv: ['--foo=1.3', '--foo=-1'],
@@ -510,17 +505,6 @@ test('isMultiple - handles multi-word flag name', t => {
510505
});
511506
});
512507

513-
test('isMultiple - handles non-set flags correctly', t => {
514-
t.deepEqual(meow({
515-
argv: [],
516-
flags: {
517-
foo: {
518-
isMultiple: true
519-
}
520-
}
521-
}).flags, {});
522-
});
523-
524508
if (NODE_MAJOR_VERSION >= 14) {
525509
test('supports es modules', async t => {
526510
try {

0 commit comments

Comments
 (0)
Please sign in to comment.