From 939ddde5bc9888490be5f20c0375d31f83b78b6f Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Mon, 5 Nov 2018 17:23:00 +0700 Subject: [PATCH] Add support for `number` flag type --- readme.md | 2 +- test.js | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 6858d2a..c24d360 100644 --- a/readme.md +++ b/readme.md @@ -97,7 +97,7 @@ Define argument flags. The key is the flag name and the value is an object with any of: -- `type`: Type of value. (Possible values: `string` `boolean`) +- `type`: Type of value. (Possible values: `string` `boolean` `number`) - `alias`: Usually used to define a short flag alias. - `default`: Default value when the flag is not specified. diff --git a/test.js b/test.js index 64c3ca3..6c8b63c 100644 --- a/test.js +++ b/test.js @@ -198,3 +198,71 @@ test('grouped short-flags work', t => { t.true(flags.c); t.true(flags.l); }); + +test('supports `number` flag type', t => { + const cli = meow({ + argv: ['--foo=1.3'], + flags: { + foo: { + type: 'number' + } + } + }).flags.foo; + + t.is(cli, 1.3); +}); + +test('supports `number` flag type - flag but no value', t => { + const cli = meow({ + argv: ['--foo'], + flags: { + foo: { + type: 'number' + } + } + }).flags.foo; + + t.is(cli, undefined); +}); + +test('supports `number` flag type - flag but no value but default', t => { + const cli = meow({ + argv: ['--foo'], + flags: { + foo: { + type: 'number', + default: 2 + } + } + }).flags.foo; + + t.is(cli, 2); +}); + +test('supports `number` flag type - no flag but default', t => { + const cli = meow({ + argv: [], + flags: { + foo: { + type: 'number', + default: 2 + } + } + }).flags.foo; + + t.is(cli, 2); +}); + +test('supports `number` flag type - throws on incorrect default value', t => { + t.throws(() => { + meow({ + argv: [], + flags: { + foo: { + type: 'number', + default: 'x' + } + } + }); + }); +});