feat: allow multiple arrays to be provided, rather than always combin… · yargs/yargs-parser@0f0fb2d

@@ -15,7 +15,9 @@ function parse (args, opts) {

1515

'camel-case-expansion': true,

1616

'dot-notation': true,

1717

'parse-numbers': true,

18-

'boolean-negation': true

18+

'boolean-negation': true,

19+

'duplicate-arguments-array': true,

20+

'flatten-duplicate-arrays': true

1921

}, opts.configuration)

2022

var defaults = opts.default || {}

2123

var configObjects = opts.configObjects || []

@@ -310,15 +312,25 @@ function parse (args, opts) {

310312

// e.g., --foo apple banana cat becomes ["apple", "banana", "cat"]

311313

function eatArray (i, key, args) {

312314

var start = i + 1

315+

var argsToSet = []

316+

var multipleArrayFlag = i > 0

313317

for (var ii = i + 1; ii < args.length; ii++) {

314318

if (/^-/.test(args[ii]) && !negative.test(args[ii])) {

315319

if (ii === start) {

316320

setArg(key, defaultForType('array'))

317321

}

322+

multipleArrayFlag = true

318323

break

319324

}

320325

i = ii

321-

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+

})

322334

}

323335324336

return i

@@ -539,13 +551,15 @@ function parse (args, opts) {

539551

if (value === increment) {

540552

o[key] = increment(o[key])

541553

} else if (o[key] === undefined && checkAllAliases(key, flags.arrays)) {

542-

o[key] = Array.isArray(value) ? value : [value]

554+

o[key] = Array.isArray(value) && configuration['flatten-duplicate-arrays'] ? value : [value]

543555

} else if (o[key] === undefined || checkAllAliases(key, flags.bools) || checkAllAliases(keys.join('.'), flags.bools) || checkAllAliases(key, flags.counts)) {

544556

o[key] = value

545557

} else if (Array.isArray(o[key])) {

546558

o[key].push(value)

547-

} else {

559+

} else if (configuration['duplicate-arguments-array']) {

548560

o[key] = [ o[key], value ]

561+

} else {

562+

o[key] = value

549563

}

550564

}

551565