diff --git a/packages/cli/bin/cli-actions/build.js b/packages/cli/bin/cli-actions/build.js index aca73760c..b9a752665 100644 --- a/packages/cli/bin/cli-actions/build.js +++ b/packages/cli/bin/cli-actions/build.js @@ -6,7 +6,7 @@ const { error, info, wrapAsync } = require('../utils'); const build = (options) => wrapAsync(function* () { try { - const config = yield resolveConfig(options.parent.config); + const config = yield resolveConfig(options.config); yield buildPatterns(config, options); info(`build: Yay, your Pattern Lab project was successfully built ☺`); } catch (err) { diff --git a/packages/cli/bin/cli-actions/disable.js b/packages/cli/bin/cli-actions/disable.js index 75a534b5a..35a460dc7 100644 --- a/packages/cli/bin/cli-actions/disable.js +++ b/packages/cli/bin/cli-actions/disable.js @@ -35,7 +35,7 @@ const enable = (options) => } }); } - yield writeJsonAsync(options.parent.config, config); + yield writeJsonAsync(options.config, config); spinner.succeed(`⊙ patternlab → Updated config`); }); diff --git a/packages/cli/bin/cli-actions/enable.js b/packages/cli/bin/cli-actions/enable.js index 4c493cc51..f5a3c67fb 100644 --- a/packages/cli/bin/cli-actions/enable.js +++ b/packages/cli/bin/cli-actions/enable.js @@ -33,7 +33,7 @@ const enable = (options) => } }); } - yield writeJsonAsync(options.parent.config, config); + yield writeJsonAsync(options.config, config); spinner.succeed(`⊙ patternlab → Updated config`); }); diff --git a/packages/cli/bin/cli-actions/export.js b/packages/cli/bin/cli-actions/export.js index 8f67251e2..bfe674770 100644 --- a/packages/cli/bin/cli-actions/export.js +++ b/packages/cli/bin/cli-actions/export.js @@ -5,7 +5,7 @@ const wrapAsync = require('../utils').wrapAsync; const _export = (options) => wrapAsync(function* () { - const config = yield resolveConfig(options.parent.config); + const config = yield resolveConfig(options.config); archive(config); }); diff --git a/packages/cli/bin/cli-actions/install.js b/packages/cli/bin/cli-actions/install.js index 9c070bb17..a00fca97f 100644 --- a/packages/cli/bin/cli-actions/install.js +++ b/packages/cli/bin/cli-actions/install.js @@ -13,7 +13,7 @@ const writeJsonAsync = require('../utils').writeJsonAsync; */ const install = (options) => wrapAsync(function* () { - const config = yield resolveConfig(options.parent.config); + const config = yield resolveConfig(options.config); const spinner = ora( `⊙ patternlab → Installing additional resources …` @@ -58,7 +58,7 @@ const install = (options) => `⊙ patternlab → Installed following plugins: ${plugins.join(', ')}` ); } - yield writeJsonAsync(options.parent.config, config); + yield writeJsonAsync(options.config, config); spinner.succeed(`⊙ patternlab → Updated config`); }); diff --git a/packages/cli/bin/cli-actions/serve.js b/packages/cli/bin/cli-actions/serve.js index 9ef4e42f2..40576a761 100644 --- a/packages/cli/bin/cli-actions/serve.js +++ b/packages/cli/bin/cli-actions/serve.js @@ -5,7 +5,7 @@ const wrapAsync = require('../utils').wrapAsync; const serve = (options) => wrapAsync(function* () { - const config = yield resolveConfig(options.parent.config); + const config = yield resolveConfig(options.config); servePatterns(config, options); }); diff --git a/packages/cli/bin/patternlab.js b/packages/cli/bin/patternlab.js index e2ed6cd1e..a645f3259 100755 --- a/packages/cli/bin/patternlab.js +++ b/packages/cli/bin/patternlab.js @@ -1,7 +1,8 @@ #!/usr/bin/env node /* eslint-disable no-unused-vars */ 'use strict'; -const cli = require('commander'); +const { Command } = require('commander'); +const cli = new Command(); const path = require('path'); const build = require('./cli-actions/build'); const disable = require('./cli-actions/disable'); @@ -38,15 +39,7 @@ const list = (val) => val.split(','); cli .version(version(pkg), '-V, --version') .usage(' [options]') - .arguments(' [options]') - .option( - '-c, --config ', - 'Specify config file. Default looks up the project dir', - (val) => val.trim(), - path.resolve(process.cwd(), 'patternlab-config.json') - ) - .option('-v, --verbose', 'Show verbose console logs', verboseLogs) - .option('--silent', 'Turn off console logs', silenceLogs); + .arguments(' [options]'); /** * build @@ -134,6 +127,20 @@ cli .option('--no-watch', 'Start watching for changes') .action(serve); +// Common options can be added manually after setting up program and subcommands. +// If the options are unsorted in the help, these will appear last. +cli.commands.forEach((command) => { + command + .option( + '-c, --config ', + 'Specify config file. Default looks up the project dir', + (val) => val.trim(), + path.resolve(process.cwd(), 'patternlab-config.json') + ) + .option('-v, --verbose', 'Show verbose console logs', verboseLogs) + .option('--silent', 'Turn off console logs', silenceLogs); +}); + // Show additional help cli.on('--help', help); diff --git a/packages/cli/package.json b/packages/cli/package.json index 6eedcf29a..659f427ec 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -12,7 +12,7 @@ "@pattern-lab/core": "^5.17.0", "archiver": "5.3.0", "chalk": "4.1.0", - "commander": "6.2.1", + "commander": "9.4.1", "deepmerge": "^4.2.2", "execa": "5.0.0", "fs-extra": "10.0.0", diff --git a/yarn.lock b/yarn.lock index d1161a3e4..6740ab53d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4676,10 +4676,10 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== +commander@9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" + integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== commander@^2.19.0, commander@^2.2.0, commander@^2.20.0: version "2.20.3"