From 5c7c24212b7c99a4c86cba90329ee6d7fc970a2b Mon Sep 17 00:00:00 2001 From: Corey Butler Date: Tue, 3 Aug 2021 22:44:16 -0500 Subject: [PATCH] Fixed regression with multi-value flags --- package.json | 2 +- src/index.js | 6 +++++- tests/09-regression.js | 18 ++++++++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 0764f34..068775f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@author.io/arg", - "version": "1.3.13", + "version": "1.3.14", "description": "An argument parser for CLI applications.", "main": "src/index.js", "exports": { diff --git a/src/index.js b/src/index.js index d1349f9..38cd99f 100644 --- a/src/index.js +++ b/src/index.js @@ -205,7 +205,11 @@ class Parser { this.#length = flags.length + args.length for (const arg of flags) { - this.#flagRef(arg.flag).value = arg.value + let ref = this.#flagRef(arg.flag) + if (ref.aliasOf) { + ref = ref.aliasOf + } + ref.value = arg.value } for (const arg of args) { diff --git a/tests/09-regression.js b/tests/09-regression.js index 23047a9..22f5d70 100644 --- a/tests/09-regression.js +++ b/tests/09-regression.js @@ -64,7 +64,7 @@ test('Non-Boolean Regression Test', t => { t.end() }) -test('Flag values with spaces', t => { +test('Spaces in flag values', t => { const input = 'test -c "my connection"' const cfg = { connection: { @@ -75,4 +75,18 @@ test('Flag values with spaces', t => { t.expect('my connection', data.connection, 'Extract escaped values with spaces') t.end() -}) \ No newline at end of file +}) + +test('Multi-value flags', t => { + const input = 'test -f a.js -f b.js' + const cfg = { + file: { + alias: 'f', + allowMultipleValues: true + } + } + const { data } = new Parser(input, cfg) + + t.expect(2, data.file.length, 'Extract multiple values') + t.end() +})