From 500f467fdaa098eb7f09168a885788696a718713 Mon Sep 17 00:00:00 2001 From: Maximilian <787658+mfranzke@users.noreply.github.com> Date: Wed, 4 Jan 2023 13:12:10 +0100 Subject: [PATCH] refactor: adapted "global" options example https://github.com/tj/commander.js/pull/1708 --- packages/cli/bin/cli-actions/build.js | 2 +- packages/cli/bin/cli-actions/disable.js | 2 +- packages/cli/bin/cli-actions/enable.js | 2 +- packages/cli/bin/cli-actions/export.js | 2 +- packages/cli/bin/cli-actions/install.js | 4 ++-- packages/cli/bin/cli-actions/serve.js | 2 +- packages/cli/bin/patternlab.js | 27 ++++++++++++++++--------- 7 files changed, 24 insertions(+), 17 deletions(-) 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);