@@ -16,7 +16,8 @@ function parse (args, opts) {
16
16
'dot-notation' : true ,
17
17
'parse-numbers' : true ,
18
18
'boolean-negation' : true ,
19
- 'duplicate-arguments-array' : true
19
+ 'duplicate-arguments-array' : true ,
20
+ 'flatten-duplicate-arrays' : true
20
21
} , opts . configuration )
21
22
var defaults = opts . default || { }
22
23
var configObjects = opts . configObjects || [ ]
@@ -311,15 +312,25 @@ function parse (args, opts) {
311
312
// e.g., --foo apple banana cat becomes ["apple", "banana", "cat"]
312
313
function eatArray ( i , key , args ) {
313
314
var start = i + 1
315
+ var argsToSet = [ ]
316
+ var multipleArrayFlag = i > 0
314
317
for ( var ii = i + 1 ; ii < args . length ; ii ++ ) {
315
318
if ( / ^ - / . test ( args [ ii ] ) && ! negative . test ( args [ ii ] ) ) {
316
319
if ( ii === start ) {
317
320
setArg ( key , defaultForType ( 'array' ) )
318
321
}
322
+ multipleArrayFlag = true
319
323
break
320
324
}
321
325
i = ii
322
- setArg ( key , args [ ii ] )
326
+ argsToSet . push ( args [ ii ] )
327
+ }
328
+ if ( multipleArrayFlag && ! configuration [ 'flatten-duplicate-arrays' ] ) {
329
+ setArg ( key , argsToSet )
330
+ } else {
331
+ argsToSet . forEach ( function ( arg ) {
332
+ setArg ( key , arg )
333
+ } )
323
334
}
324
335
325
336
return i
@@ -540,7 +551,7 @@ function parse (args, opts) {
540
551
if ( value === increment ) {
541
552
o [ key ] = increment ( o [ key ] )
542
553
} else if ( o [ key ] === undefined && checkAllAliases ( key , flags . arrays ) ) {
543
- o [ key ] = Array . isArray ( value ) ? value : [ value ]
554
+ o [ key ] = Array . isArray ( value ) && configuration [ 'flatten-duplicate-arrays' ] ? value : [ value ]
544
555
} else if ( o [ key ] === undefined || checkAllAliases ( key , flags . bools ) || checkAllAliases ( keys . join ( '.' ) , flags . bools ) || checkAllAliases ( key , flags . counts ) ) {
545
556
o [ key ] = value
546
557
} else if ( Array . isArray ( o [ key ] ) ) {
0 commit comments