From 2ee285e1c4865126c36cfbc8ed5294e9459f218e Mon Sep 17 00:00:00 2001 From: Jonatan Nilsson Date: Thu, 14 Oct 2021 09:52:56 +0000 Subject: [PATCH] argv: Add support for boolean flags when equal sign is used --- lib/stores/argv.mjs | 2 ++ test/stores/argv.test.mjs | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/stores/argv.mjs b/lib/stores/argv.mjs index 635a2ca..ea42cce 100644 --- a/lib/stores/argv.mjs +++ b/lib/stores/argv.mjs @@ -52,6 +52,8 @@ Argv.prototype.load = function () { let equalSignIndex = key.indexOf('=') if (equalSignIndex > 0) { this.set(key.slice(0, equalSignIndex), key.slice(equalSignIndex + 1)) + } else { + this.set(key, true) } } else if (args[i + 1] && !args[i + 1].startsWith(this.prefix)) { this.set(key, args[i + 1]) diff --git a/test/stores/argv.test.mjs b/test/stores/argv.test.mjs index e151fe8..699bd93 100644 --- a/test/stores/argv.test.mjs +++ b/test/stores/argv.test.mjs @@ -140,6 +140,25 @@ t.describe('#load()', () => { testety: 'hello', }) }) + + t.test('equal sign should support boolean values', function() { + process.argv = ['bla', 'bla', + '--booleanone', + '--foobar=123', + '--testety=hello', + '--booleantwo', + ] + let store = new Nconf.Argv({ useEqualsign: true }) + store.load() + assert.strictEqual(store.get('booleanone'), true) + assert.strictEqual(store.get('booleantwo'), true) + assert.deepStrictEqual(store.get(), { + foobar: '123', + testety: 'hello', + booleanone: true, + booleantwo: true, + }) + }) t.test('should be smart with the usage of equal sign', function() { process.argv = ['bla', 'bla',