From fb6f990b538bda1beac2115a3077a51e6597c62a Mon Sep 17 00:00:00 2001 From: Mark Birbeck Date: Tue, 7 Mar 2017 14:29:34 +0000 Subject: [PATCH 1/2] add failing test --- test/yargs-parser.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/yargs-parser.js b/test/yargs-parser.js index 5b59c615..6356c3ab 100644 --- a/test/yargs-parser.js +++ b/test/yargs-parser.js @@ -444,6 +444,18 @@ describe('yargs-parser', function () { argv.should.have.property('foo').and.deep.equal('baz') }) + it('should combine values from config file and argv, if argv value is an array', function () { + var argv = parser(['--foo', 'bar'], { + config: ['settings'], + array: ['foo'], + default: { + settings: jsonPath + } + }) + + argv.should.have.property('foo').and.deep.equal(['bar', 'baz']) + }) + it('should use value from config file, if argv key is a boolean', function () { var argv = parser([], { config: ['settings'], From e3b3629799c93e243de8f5673f3ead6cc20c2c73 Mon Sep 17 00:00:00 2001 From: Mark Birbeck Date: Tue, 7 Mar 2017 14:37:11 +0000 Subject: [PATCH 2/2] merge config file values with argv if item is an array (rather than overwriting) --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index b71faf58..79922307 100644 --- a/index.js +++ b/index.js @@ -468,7 +468,7 @@ function parse (args, opts) { } else { // setting arguments via CLI takes precedence over // values within the config file. - if (!hasKey(argv, fullKey.split('.')) || (flags.defaulted[fullKey])) { + if (!hasKey(argv, fullKey.split('.')) || (flags.defaulted[fullKey]) || (flags.arrays[fullKey])) { setArg(fullKey, value) } }