From 20bb99b25630594542577133d51e38a4c6712d31 Mon Sep 17 00:00:00 2001 From: Jonathan Carter Date: Mon, 16 Oct 2017 21:59:37 -0700 Subject: [PATCH] feat: replace /bin/bash with file basename (#983) --- lib/usage.js | 7 ++-- test/command.js | 8 ++--- test/usage.js | 86 +++++++++++++++++++++++----------------------- test/validation.js | 2 +- test/yargs.js | 2 +- 5 files changed, 53 insertions(+), 52 deletions(-) diff --git a/lib/usage.js b/lib/usage.js index c742f8db9..24a9a9a69 100644 --- a/lib/usage.js +++ b/lib/usage.js @@ -3,6 +3,7 @@ // failures, etc. keeps logging in one place. const stringWidth = require('string-width') const objFilter = require('./obj-filter') +const path = require('path') const setBlocking = require('set-blocking') const YError = require('./yerror') @@ -165,7 +166,7 @@ module.exports = function usage (yargs, y18n) { // the usage string. if (usages.length && !usageDisabled) { - const u = self.getUsage().replace(/\$0/g, yargs.$0) + const u = self.getUsage().replace(/\$0/g, path.basename(yargs.$0)) ui.div(`${u}`) } @@ -275,7 +276,7 @@ module.exports = function usage (yargs, y18n) { ui.div(__('Examples:')) examples.forEach((example) => { - example[0] = example[0].replace(/\$0/g, yargs.$0) + example[0] = example[0].replace(/\$0/g, path.basename(yargs.$0)) }) examples.forEach((example) => { @@ -304,7 +305,7 @@ module.exports = function usage (yargs, y18n) { // the usage string. if (epilog) { - const e = epilog.replace(/\$0/g, yargs.$0) + const e = epilog.replace(/\$0/g, path.basename(yargs.$0)) ui.div(`${e}\n`) } diff --git a/test/command.js b/test/command.js index 1f303db87..66567169a 100644 --- a/test/command.js +++ b/test/command.js @@ -532,7 +532,7 @@ describe('Command', () => { r.should.have.property('errors').with.length(0) r.should.have.property('logs') r.logs[0].split(/\n+/).should.deep.equal([ - './command dream [command] [opts]', + 'command dream [command] [opts]', 'Commands:', ' of-memory Dream about a specific memory', ' within-a-dream [command] [opts] Dream within a dream', @@ -604,7 +604,7 @@ describe('Command', () => { r.should.have.property('errors').with.length(0) r.should.have.property('logs') r.logs.join('\n').split(/\n+/).should.deep.equal([ - './command cyclic', + 'command cyclic', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -674,7 +674,7 @@ describe('Command', () => { .argv, [ './command' ]) const expectedCmd = [ - './command cmd ', + 'command cmd ', 'Commands:', ' sub Run the subcommand', 'Options:', @@ -684,7 +684,7 @@ describe('Command', () => { ] const expectedSub = [ - './command cmd sub', + 'command cmd sub', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', diff --git a/test/usage.js b/test/usage.js index c97592a8c..201ea7fbc 100644 --- a/test/usage.js +++ b/test/usage.js @@ -30,7 +30,7 @@ describe('usage tests', () => { r.result.should.have.property('z', 20) r.result.should.have.property('_').with.length(0) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -x NUM -y NUM', + 'Usage: usage -x NUM -y NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -54,7 +54,7 @@ describe('usage tests', () => { r.result.should.have.property('y', 10) r.result.should.have.property('_').with.length(1) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -w NUM -m NUM', + 'Usage: usage -w NUM -m NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -78,7 +78,7 @@ describe('usage tests', () => { r.result.should.have.property('y', 10) r.result.should.have.property('_').with.length(0) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -w NUM -m NUM', + 'Usage: usage -w NUM -m NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -119,7 +119,7 @@ describe('usage tests', () => { r.result.should.have.property('z', 20) r.result.should.have.property('_').with.length(0) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -x NUM -y NUM', + 'Usage: usage -x NUM -y NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -142,7 +142,7 @@ describe('usage tests', () => { r.result.should.have.property('y', 10) r.result.should.have.property('_').with.length(1) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -w NUM -m NUM', + 'Usage: usage -w NUM -m NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -167,7 +167,7 @@ describe('usage tests', () => { r.result.should.have.property('y', 10) r.result.should.have.property('_').with.length(0) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -w NUM -m NUM', + 'Usage: usage -w NUM -m NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -190,7 +190,7 @@ describe('usage tests', () => { r.result.should.have.property('z', 20) r.result.should.have.property('_').with.length(0) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -x NUM -y NUM', + 'Usage: usage -x NUM -y NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -347,7 +347,7 @@ describe('usage tests', () => { r.result.should.have.property('z', 20) r.result.should.have.property('_').with.length(0) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -x NUM -y NUM', + 'Usage: usage -x NUM -y NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -375,7 +375,7 @@ describe('usage tests', () => { r.should.have.property('exit').and.be.ok r.should.have.property('errors') r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -x NUM -y NUM', + 'Usage: usage -x NUM -y NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -419,7 +419,7 @@ describe('usage tests', () => { r.should.have.property('exit').and.be.ok r.should.have.property('errors') r.errors.join('\n').split(/\n+/).join('\n').should.equal( - 'Usage: ./usage -x NUM -y NUM\n' + + 'Usage: usage -x NUM -y NUM\n' + 'Options:\n' + ' --help Show help [boolean]\n' + ' --version Show version number [boolean]\n' + @@ -446,7 +446,7 @@ describe('usage tests', () => { } }) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage -x NUM -y NUM', + 'Usage: usage -x NUM -y NUM', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -579,7 +579,7 @@ describe('usage tests', () => { r.result.should.have.property('moo', true) r.should.have.property('errors') r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage [x] [y] [z] {OPTIONS}', + 'Usage: usage [x] [y] [z] {OPTIONS}', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -601,7 +601,7 @@ describe('usage tests', () => { r.result.should.have.property('moo', true) r.should.have.property('errors') r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage [x] [y] [z] {OPTIONS} [extra_files...]', + 'Usage: usage [x] [y] [z] {OPTIONS} [extra_files...]', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -686,7 +686,7 @@ describe('usage tests', () => { r.should.have.property('logs').with.length(0) r.should.have.property('exit').and.be.ok r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage [options]', + 'Usage: usage [options]', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -714,7 +714,7 @@ describe('usage tests', () => { r.should.have.property('logs').with.length(0) r.should.have.property('exit').and.be.ok r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage [options]', + 'Usage: usage [options]', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -745,7 +745,7 @@ describe('usage tests', () => { r.should.have.property('logs').with.length(0) r.should.have.property('exit').and.be.ok r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage [options]', + 'Usage: usage [options]', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -794,7 +794,7 @@ describe('usage tests', () => { r.result.should.have.property('baz', 30) r.should.have.property('errors') r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage [options]', + 'Usage: usage [options]', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -829,7 +829,7 @@ describe('usage tests', () => { r.result.should.have.property('baz', 30) r.should.have.property('errors') r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage [options]', + 'Usage: usage [options]', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -865,7 +865,7 @@ describe('usage tests', () => { r.result.should.have.property('q', 40) r.should.have.property('errors') r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage [options]', + 'Usage: usage [options]', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -919,8 +919,8 @@ describe('usage tests', () => { ' --version Show version number [boolean]', ' -y [required]', 'Examples:', - ' ./usage something description', - ' ./usage something else other description', + ' usage something description', + ' usage something else other description', 'Missing required argument: y' ]) }) @@ -941,7 +941,7 @@ describe('usage tests', () => { r.result.should.have.property('z', 20) r.result.should.have.property('_').with.length(0) r.errors.join('\n').split(/\n/).should.deep.equal([ - 'Usage: ./usage -x NUM [-y NUM]', + 'Usage: usage -x NUM [-y NUM]', '', 'Options:', ' --help Show help [boolean]', @@ -971,7 +971,7 @@ describe('usage tests', () => { r.result.should.have.property('z', 20) r.result.should.have.property('_').with.length(0) r.errors.join('\n').split(/\n/).should.deep.equal([ - 'Usage: ./usage -x NUM [-y NUM]', + 'Usage: usage -x NUM [-y NUM]', '', 'Options:', ' --help Show help [boolean]', @@ -1038,7 +1038,7 @@ describe('usage tests', () => { r.should.have.property('errors').with.length(0) r.should.have.property('logs') r.logs.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage options', + 'Usage: usage options', 'Options:', ' --help Show help [boolean]', ' --version Show version number [boolean]', @@ -1066,7 +1066,7 @@ describe('usage tests', () => { r.should.have.property('errors').with.length(0) r.should.have.property('logs') r.logs.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage options', + 'Usage: usage options', 'Options:', ' --help, -h Show help [boolean]', ' --version Show version number [boolean]', @@ -1096,7 +1096,7 @@ describe('usage tests', () => { r.should.have.property('errors').with.length(0) r.should.have.property('logs') r.logs.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage options', + 'Usage: usage options', 'Options:', ' --help, -h Show help [boolean]', ' --version Show version number [boolean]', @@ -1495,7 +1495,7 @@ describe('usage tests', () => { '' ]) commandHelp.logs[0].split('\n').should.deep.equal([ - './usage upload ', + 'usage upload ', '', 'Options:', ' --help Show help [boolean]', @@ -1537,7 +1537,7 @@ describe('usage tests', () => { '' ]) commandHelp.logs[0].split('\n').should.deep.equal([ - './usage upload ', + 'usage upload ', '', 'Options:', ' --help Show help [boolean]', @@ -1563,7 +1563,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage upload', + 'usage upload', '', 'Flags:', ' -q [boolean]', @@ -1601,7 +1601,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage upload', + 'usage upload', '', 'Flags:', ' -q [boolean]', @@ -1635,7 +1635,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage upload', + 'usage upload', '', 'Awesome Flags:', ' -i [boolean]', @@ -1673,7 +1673,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage upload', + 'usage upload', '', 'Awesome Flags:', ' -i [boolean]', @@ -1756,7 +1756,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage one two [next]', + 'usage one two [next]', '', 'Options:', ' --help Show help [boolean]', @@ -1773,7 +1773,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage one two [next]', + 'usage one two [next]', '', 'Options:', ' --help Show help [boolean]', @@ -1826,8 +1826,8 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage upload [something]', - './usage upload [something else]', + 'usage upload [something]', + 'usage upload [something else]', '', 'Options:', ' --help Show help [boolean]', @@ -1884,7 +1884,7 @@ describe('usage tests', () => { ' --help Show help [boolean]', ' --version Show version number [boolean]', ' -y [required]', - 'Try \'./usage --long-help\' for more information', + 'Try \'usage --long-help\' for more information', 'Missing required argument: y' ]) }) @@ -2571,7 +2571,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage list [pattern]', + 'usage list [pattern]', '', 'Positionals:', ' pattern the pattern to list keys for', @@ -2594,7 +2594,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage list [pattern...]', + 'usage list [pattern...]', '', 'Positionals:', ' pattern the pattern to list keys for [array] [default: []]', @@ -2617,7 +2617,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage list ', + 'usage list ', '', 'Positionals:', ' pattern the pattern to list keys for [required]', @@ -2640,7 +2640,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage list [pattern|thingy]', + 'usage list [pattern|thingy]', '', 'Positionals:', ' pattern, thingy the pattern to list keys for', @@ -2664,7 +2664,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage list [pattern]', + 'usage list [pattern]', '', 'Positionals:', ' pattern the pattern to list keys for [string]', @@ -2688,7 +2688,7 @@ describe('usage tests', () => { ) r.logs[0].split('\n').should.deep.equal([ - './usage list [pattern]', + 'usage list [pattern]', '', 'Positionals:', ' pattern the pattern to list keys for [choices: "foo", "bar"]', diff --git a/test/validation.js b/test/validation.js index ff9a60792..213cf7fc5 100644 --- a/test/validation.js +++ b/test/validation.js @@ -793,7 +793,7 @@ describe('validation tests', () => { r.should.have.property('exit').and.be.ok r.result.should.have.property('_').and.deep.equal(['src', 'dest']) r.errors.join('\n').split(/\n+/).should.deep.equal([ - 'Usage: ./usage [x] [y] [z] {OPTIONS} [extra_files...]', + 'Usage: usage [x] [y] [z] {OPTIONS} [extra_files...]', 'too many arguments are provided' ]) }) diff --git a/test/yargs.js b/test/yargs.js index a9f41a8ff..b2fd60e5f 100644 --- a/test/yargs.js +++ b/test/yargs.js @@ -369,7 +369,7 @@ describe('yargs dsl tests', () => { }) r.logs[0].split('\n').should.deep.equal([ - './usage blerg', + 'usage blerg', '', 'Commands:', ' snuh snuh command',