From 453ba5294f61bf1ce891c2704ae74b96ef0132fa Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Fri, 8 Jul 2016 11:16:07 -0600 Subject: [PATCH] fix(cli): re-enable parallel scripts PR #29 broke the following case: ``` p-s -p lint,test ``` This commit fixes it by getting the scripts from the args first and seeing if there are any scripts available to run. If not, then we show the help message. --- .travis.yml | 2 +- package-scripts.js | 2 +- src/bin-utils.js | 14 +++++++------- src/bin-utils.test.js | 9 +++++++++ src/bin/p-s.js | 4 ++-- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1b69261..8ae9de3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ before_install: before_script: - npm prune script: - - npm start validate + - npm run localstart validate after_success: - 'curl -Lo travis_after_all.py https://git.io/travis_after_all' - python travis_after_all.py diff --git a/package-scripts.js b/package-scripts.js index 0cf7bf7..b614241 100644 --- a/package-scripts.js +++ b/package-scripts.js @@ -45,7 +45,7 @@ module.exports = { }, validate: { description: 'This runs several scripts to make sure things look good before committing or on clean install', - script: `p-s -p ${validate.join(',')} && p-s check-coverage`, + script: `dist/bin/p-s.js -p ${validate.join(',')} && p-s check-coverage`, }, addContributor: { description: 'When new people contribute to the project, run this', diff --git a/src/bin-utils.js b/src/bin-utils.js index 9aaf12c..c0bba14 100644 --- a/src/bin-utils.js +++ b/src/bin-utils.js @@ -43,15 +43,15 @@ export {getScriptsAndArgs, help, getModuleRequirePath, preloadModule, loadConfig /****** implementations ******/ function getScriptsAndArgs(program) { - let scripts, args, parallel - if (isEmpty(program.parallel)) { - scripts = program.args[0].split(',') - args = getArgs(program.args.slice(1), program.rawArgs, scripts) - parallel = false - } else { + let scripts = [] + let args = '' + const parallel = !isEmpty(program.parallel) + if (parallel) { scripts = program.parallel.split(',') args = getArgs(program.args, program.rawArgs, scripts) - parallel = true + } else if (!isEmpty(program.args)) { + scripts = program.args[0].split(',') + args = getArgs(program.args.slice(1), program.rawArgs, scripts) } return {scripts, args, parallel} } diff --git a/src/bin-utils.test.js b/src/bin-utils.test.js index 232bdcb..6390b99 100644 --- a/src/bin-utils.test.js +++ b/src/bin-utils.test.js @@ -32,6 +32,15 @@ test('getScriptsAndArgs: passes args to scripts', t => { t.is(args, '--watch --verbose') }) +test('getScriptsAndArgs: returns empty scripts and args if not parallel and no args', t => { + const {args, scripts} = getScriptsAndArgs({ + args: [], + rawArgs: ['node', 'p-s'], + }) + t.is(scripts.length, 0) + t.is(args, '') +}) + test('preloadModule: resolves a relative path', t => { const relativePath = '../test/fixtures/my-module' const val = preloadModule(relativePath) diff --git a/src/bin/p-s.js b/src/bin/p-s.js index e37e7cc..d2adda3 100755 --- a/src/bin/p-s.js +++ b/src/bin/p-s.js @@ -21,14 +21,14 @@ program .on('--help', onHelp) .parse(process.argv) -if (program.args.length < 1) { +const scriptsAndArgs = getScriptsAndArgs(program) +if (scriptsAndArgs.scripts.length < 1) { program.outputHelp() } else { loadAndRun() } function loadAndRun() { - const scriptsAndArgs = getScriptsAndArgs(program) const psConfig = getPSConfig() runPackageScript({