Skip to content

Commit

Permalink
chore: switch over to leven for command suggestion (#5166)
Browse files Browse the repository at this point in the history
* chore: switch to leven

* chore: update lock file

* chore: iterate through all the available commands and find closest match

* chore: update yarn.lock

* fix: lint

* chore: find the best possible match
  • Loading branch information
jamesgeorge007 committed Feb 13, 2020
1 parent 38a7b0f commit 130bcfb
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 21 deletions.
15 changes: 10 additions & 5 deletions packages/@vue/cli/bin/vue.js
Expand Up @@ -5,10 +5,7 @@

const { chalk, semver } = require('@vue/cli-shared-utils')
const requiredVersion = require('../package.json').engines.node
const didYouMean = require('didyoumean')

// Setting edit distance to 60% of the input string's length
didYouMean.threshold = 0.6
const leven = require('leven')

function checkNodeVersion (wanted, id) {
if (!semver.satisfies(process.version, wanted)) {
Expand Down Expand Up @@ -261,7 +258,15 @@ if (!process.argv.slice(2).length) {
function suggestCommands (unknownCommand) {
const availableCommands = program.commands.map(cmd => cmd._name)

const suggestion = didYouMean(unknownCommand, availableCommands)
let suggestion

availableCommands.forEach(cmd => {
const isBestMatch = leven(cmd, unknownCommand) < leven(suggestion || '', unknownCommand)
if (leven(cmd, unknownCommand) < 3 && isBestMatch) {
suggestion = cmd
}
})

if (suggestion) {
console.log(` ` + chalk.red(`Did you mean ${chalk.yellow(suggestion)}?`))
}
Expand Down
2 changes: 1 addition & 1 deletion packages/@vue/cli/package.json
Expand Up @@ -33,7 +33,6 @@
"commander": "^2.20.0",
"debug": "^4.1.0",
"deepmerge": "^4.2.2",
"didyoumean": "^1.2.1",
"download-git-repo": "^1.0.2",
"ejs": "^2.7.1",
"envinfo": "^7.5.0",
Expand All @@ -45,6 +44,7 @@
"javascript-stringify": "^1.6.0",
"js-yaml": "^3.13.1",
"jscodeshift": "^0.7.0",
"leven": "^3.1.0",
"lodash.clonedeep": "^4.5.0",
"lru-cache": "^5.1.1",
"minimist": "^1.2.0",
Expand Down
17 changes: 2 additions & 15 deletions yarn.lock
Expand Up @@ -2529,7 +2529,7 @@
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==

"@types/mocha@^5.2.4", "@types/mocha@^5.2.6":
"@types/mocha@^5.2.6":
version "5.2.7"
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea"
integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==
Expand Down Expand Up @@ -2798,14 +2798,6 @@
resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz#18723530d304f443021da2292d6ec9502826104a"
integrity sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w==

"@vue/test-utils@1.0.0-beta.29":
version "1.0.0-beta.29"
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.29.tgz#c942cf25e891cf081b6a03332b4ae1ef430726f0"
integrity sha512-yX4sxEIHh4M9yAbLA/ikpEnGKMNBCnoX98xE1RwxfhQVcn0MaXNSj1Qmac+ZydTj6VBSEVukchBogXBTwc+9iA==
dependencies:
dom-event-types "^1.0.0"
lodash "^4.17.4"

"@vue/test-utils@1.0.0-beta.31":
version "1.0.0-beta.31"
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.31.tgz#580d6e45f07452e497d69807d80986e713949b73"
Expand Down Expand Up @@ -5161,7 +5153,7 @@ chrome-trace-event@^1.0.2:
dependencies:
tslib "^1.9.0"

chromedriver@80, chromedriver@^80.0.0:
chromedriver@^80.0.0:
version "80.0.0"
resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-80.0.0.tgz#f9e2af4c2117e7e07dc4558cf9496a70ad6c3ddc"
integrity sha512-W4tIbaOve7HeGFLnbbZMV4AUlnBaapL+H41fvDFKOXCmUvgPhxVN9y/c3EgmsOcokLQkqxpOC/txEujms1eT0w==
Expand Down Expand Up @@ -6778,11 +6770,6 @@ dicer@0.3.0:
dependencies:
streamsearch "0.1.2"

didyoumean@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff"
integrity sha1-6S7f2tplN9SE1zwBcv0eugxJdv8=

diff-sequences@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
Expand Down

0 comments on commit 130bcfb

Please sign in to comment.