Skip to content

Commit

Permalink
fix(cli): Pass global defaults into option factory instead of yargs.c…
Browse files Browse the repository at this point in the history
…onfig()

This change respects `--no-ci` when passed during CI execution,
instead of clobbering it with `yargs.config()`.

Fixes #1449
  • Loading branch information
evocateur committed Jul 16, 2018
1 parent 7899ab8 commit cf4008a
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 20 deletions.
20 changes: 6 additions & 14 deletions core/cli/index.js
Expand Up @@ -32,30 +32,22 @@ module.exports = lernaCLI;
*/
function lernaCLI(argv, cwd) {
const cli = yargs(argv, cwd);
let progress; // --no-progress always disables
const defaults = { ci: isCI };

if (isCI || !process.stderr.isTTY) {
if (defaults.ci || !process.stderr.isTTY) {
log.disableColor();
progress = false;
defaults.progress = false;
} else if (!process.stdout.isTTY) {
// stdout is being piped, don't log non-errors or progress bars
progress = false;

cli.check(parsedArgv => {
// eslint-disable-next-line no-param-reassign
parsedArgv.loglevel = "error";

// return truthy or else it blows up
return parsedArgv;
});
defaults.progress = false;
defaults.loglevel = "error";
} else if (process.stderr.isTTY) {
log.enableColor();
log.enableUnicode();
}

return globalOptions(cli)
return globalOptions(cli, defaults)
.usage("Usage: $0 <command> [options]")
.config({ ci: isCI, progress })
.command(addCmd)
.command(bootstrapCmd)
.command(changedCmd)
Expand Down
11 changes: 6 additions & 5 deletions core/global-options/index.js
Expand Up @@ -2,15 +2,16 @@

module.exports = globalOptions;

function globalOptions(yargs) {
function globalOptions(yargs, { ci = false, loglevel = "info", progress = true }) {
// the global options applicable to _every_ command
const opts = {
loglevel: {
defaultDescription: "info",
default: loglevel,
describe: "What level of logs to report.",
type: "string",
},
concurrency: {
defaultDescription: "4",
describe: "How many processes to use when lerna parallelizes tasks.",
type: "number",
requiresArg: true,
Expand All @@ -20,12 +21,12 @@ function globalOptions(yargs) {
type: "boolean",
},
progress: {
defaultDescription: "true",
default: !ci && progress,
describe: "Enable progress bars. Pass --no-progress to disable. (Always off in CI)",
type: "boolean",
},
sort: {
defaultDescription: "true",
default: true,
describe: "Sort packages topologically (all dependencies before dependents).",
type: "boolean",
},
Expand All @@ -43,7 +44,7 @@ function globalOptions(yargs) {
.options(opts)
.group(globalKeys, "Global Options:")
.option("ci", {
// set in core/cli via .config()
default: ci,
hidden: true,
type: "boolean",
});
Expand Down
2 changes: 1 addition & 1 deletion helpers/command-runner/index.js
Expand Up @@ -30,7 +30,7 @@ function commandRunner(commandModule) {
.wrap(null)
.command(commandModule);

globalOptions(cli);
globalOptions(cli, { loglevel: "silent", progress: false });

return (...args) =>
new Promise((resolve, reject) => {
Expand Down

0 comments on commit cf4008a

Please sign in to comment.