Skip to content

Commit

Permalink
fix(cli): output help when no conventional config + no subcommand (#9648
Browse files Browse the repository at this point in the history
)
  • Loading branch information
Josh-Cena committed Dec 21, 2023
1 parent affca7a commit 60d62d1
Showing 1 changed file with 24 additions and 4 deletions.
28 changes: 24 additions & 4 deletions packages/docusaurus/bin/docusaurus.mjs
Expand Up @@ -218,6 +218,9 @@ cli.arguments('<command>').action((cmd) => {
logger.error` Unknown command name=${cmd}.`;
});

// === The above is the commander configuration ===
// They don't start any code execution yet until cli.parse() is called below

/**
* @param {string | undefined} command
*/
Expand All @@ -237,12 +240,29 @@ function isInternalCommand(command) {
);
}

if (!isInternalCommand(process.argv.slice(2)[0])) {
await externalCommand(cli);
}
// process.argv always looks like this:
// [
// '/path/to/node',
// '/path/to/docusaurus.mjs',
// '<subcommand>',
// ...subcommandArgs
// ]

if (!process.argv.slice(2).length) {
// There is no subcommand
// TODO: can we use commander to handle this case?
if (process.argv.length < 3 || process.argv[2]?.startsWith('--')) {
cli.outputHelp();
process.exit(1);
}

// There is an unrecognized subcommand
// Let plugins extend the CLI before parsing
if (!isInternalCommand(process.argv[2])) {
// TODO: in this step, we must assume default site structure because there's
// no way to know the siteDir/config yet. Maybe the root cli should be
// responsible for parsing these arguments?
// https://github.com/facebook/docusaurus/issues/8903
await externalCommand(cli);
}

cli.parse(process.argv);
Expand Down

0 comments on commit 60d62d1

Please sign in to comment.