Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGar <gar+gh@danger.computer>2021-03-11 03:11:34 +0300
committerRuy Adorno <ruyadorno@hotmail.com>2021-03-18 22:54:36 +0300
commit41facf6435ced4e416d74111d9c3ff00ee19ab7d (patch)
tree1a6644f756670ee6fad67a9a59d135dc0f3e00ef /lib/cli.js
parenta8d0751e4b7c7d8b808c8a49f288fc7272f729b0 (diff)
feat(help): refactor npm help/help-search
Lots of dead code removed thanks to streamlining of logic. `npm help` `npm <command>` and `npm help-search` are all now separated concerns, handling their own use cases. `help` calls `help-search` as a last resort, but `npm <command>` no longer tries to wind its way through to `help-search` just to get the basic npm usage displayed. The `did you mean` output has been expanded. It now always suggests top level commands, scripts, and bins, and suggests them in the way they should be called. PR-URL: https://github.com/npm/cli/pull/2859 Credit: @wraithgar Close: #2859 Reviewed-by: @ruyadorno
Diffstat (limited to 'lib/cli.js')
-rw-r--r--lib/cli.js22
1 files changed, 18 insertions, 4 deletions
diff --git a/lib/cli.js b/lib/cli.js
index 910b674ea..837d0876c 100644
--- a/lib/cli.js
+++ b/lib/cli.js
@@ -40,11 +40,14 @@ module.exports = (process) => {
npm.load(async er => {
if (er)
return errorHandler(er)
+
+ // npm --version=cli
if (npm.config.get('version', 'cli')) {
- console.log(npm.version)
+ npm.output(npm.version)
return errorHandler.exit(0)
}
+ // npm --versions=cli
if (npm.config.get('versions', 'cli')) {
npm.argv = ['version']
npm.config.set('usage', false, 'cli')
@@ -57,9 +60,20 @@ module.exports = (process) => {
if (impl)
impl(npm.argv, errorHandler)
else {
- npm.config.set('usage', false)
- npm.argv.unshift(cmd)
- npm.commands.help(npm.argv, errorHandler)
+ try {
+ // I don't know why this is needed but we get a cb() not called if we
+ // omit it
+ npm.log.level = 'silent'
+ if (cmd) {
+ const didYouMean = require('./utils/did-you-mean.js')
+ const suggestions = await didYouMean(npm, cmd)
+ npm.output(suggestions)
+ } else
+ npm.output(npm.usage)
+ process.exitCode = 1
+ } catch (err) {
+ errorHandler(err)
+ }
}
})
}