-
Couldn't load subscription status.
- Fork 123
Open
Labels
Description
Yargs version used: 18.0.0
How to reproduce
const parser = require('yargs-parser')
parser("-x 3 -x 1")returns
{ _: [], x: 4 }i.e., it wrongfully calculated 3 + 1 = 4.
Expected would be
{ _: [], x: [ 3, 1 ] }The option "duplicate-arguments-array": false still results in 4.
If the order is changed, i.e.,
const parser = require('yargs-parser')
parser("-x 1 -x 3")then the result is correct.
Bug Cause
The increment happens in yargs-parser.ts -> setKey at this code line:
if (value === increment()) {
o[key] = increment(o[key])
} increment() === 1, i.e., it increments o[key] each time we have any argument which equals to 1.
The increment function has a comment on top stating that it "should only be called when a count is given as an arg". Obviously, we have a number and not a count here.
Workaround
A workaround in yargs/yargs consists in setting type="string".