diff --git a/cli.js b/cli.js index d057c7d..8c2008b 100755 --- a/cli.js +++ b/cli.js @@ -6,7 +6,7 @@ const LessPass = require('lesspass'); const read = require('read'); const chalk = require('chalk'); -const cli = meow(` +const helpMessage = ` Usage $ lesspass [masterPassword] [options] @@ -39,7 +39,12 @@ const cli = meow(` # only digits and length of 8 $ lesspass lesspass.com contact@lesspass.com -d -L8 master password: - 75837019`, {alias: {L: 'length', c: 'counter', C: 'clipboard'}}); + 75837019`; + +const cli = meow(helpMessage, { + alias: {L: 'length', c: 'counter', C: 'clipboard'}, + boolean: ['l', 'u', 'd', 's', 'C', 'clipboard'] +}); function calcPassword(site, login, masterPassword, passwordProfile) { diff --git a/test.js b/test.js index 4b28f85..3e27097 100644 --- a/test.js +++ b/test.js @@ -6,6 +6,16 @@ test('default options', async t => { t.is(stdout, '\\g-A1-.OHEwrXjT#'); }); +test('options can be before parameters', async t => { + const {stdout} = await execa('./cli.js', ['-C', 'lesspass.com', 'contact@lesspass.com', 'password']); + t.is(stdout, 'Copied to clipboard'); +}); + +test('long options can be before parameters', async t => { + const {stdout} = await execa('./cli.js', ['--clipboard', 'lesspass.com', 'contact@lesspass.com', 'password']); + t.is(stdout, 'Copied to clipboard'); +}); + test('length', async t => { const {stdout} = await execa('./cli.js', ['lesspass.com', 'contact@lesspass.com', 'password', '--length=14']); t.is(stdout, '=0\\A-.OHEKvwrX'); @@ -89,4 +99,39 @@ test('only symbols', async t => { test('test space in password', async t => { const {stdout} = await execa('./cli.js', ['lesspass.com', 'contact@lesspass.com', 'my Master Password']); t.is(stdout, 'D1PBB34\\#fh!LY={'); +}); + +test('doc 1', async t => { + const {stdout} = await execa('./cli.js', ['lesspass.com', 'contact@lesspass.com', 'password', '--no-symbols']); + t.is(stdout, 'OlfK63bmUhqrGODR'); +}); + +test('doc 1 options before', async t => { + const {stdout} = await execa('./cli.js', ['--no-symbols', 'lesspass.com', 'contact@lesspass.com', 'password']); + t.is(stdout, 'OlfK63bmUhqrGODR'); +}); + +test('doc 2', async t => { + const {stdout} = await execa('./cli.js', ['lesspass.com', 'contact@lesspass.com', 'password', '-lud']); + t.is(stdout, 'OlfK63bmUhqrGODR'); +}); + +test('doc 2 options before', async t => { + const {stdout} = await execa('./cli.js', ['-lud', 'lesspass.com', 'contact@lesspass.com', 'password']); + t.is(stdout, 'OlfK63bmUhqrGODR'); +}); + +test('doc 3', async t => { + const {stdout} = await execa('./cli.js', ['lesspass.com', 'contact@lesspass.com', 'password', '-d', '-L8']); + t.is(stdout, '75837019'); +}); + +test('doc 3 options before', async t => { + const {stdout} = await execa('./cli.js', ['-d', '-L8', 'lesspass.com', 'contact@lesspass.com', 'password']); + t.is(stdout, '75837019'); +}); + +test('doc 3 options before and after', async t => { + const {stdout} = await execa('./cli.js', ['-d', 'lesspass.com', 'contact@lesspass.com', 'password', '-L8']); + t.is(stdout, '75837019'); }); \ No newline at end of file