mirror of
https://github.com/nodejs/node.git
synced 2025-05-22 04:28:50 +00:00

PR-URL: https://github.com/nodejs/node/pull/35474 Reviewed-By: Ruy Adorno <ruyadorno@github.com> Reviewed-By: Ujjwal Sharma <ryzokuken@disroot.org> Reviewed-By: Ben Coe <bencoe@gmail.com> Reviewed-By: Geoffrey Booth <webmaster@geoffreybooth.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Shelley Vohr <codebytere@gmail.com> Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
28 lines
782 B
JavaScript
28 lines
782 B
JavaScript
// de-reference abbreviations and shorthands into canonical command name
|
|
|
|
const { aliases, cmdList, plumbing } = require('../utils/cmd-list.js')
|
|
const aliasNames = Object.keys(aliases)
|
|
const fullList = cmdList.concat(aliasNames).filter(c => !plumbing.includes(c))
|
|
const abbrev = require('abbrev')
|
|
const abbrevs = abbrev(fullList)
|
|
|
|
module.exports = c => {
|
|
if (!c || typeof c !== 'string') {
|
|
return ''
|
|
}
|
|
if (c.match(/[A-Z]/)) {
|
|
c = c.replace(/([A-Z])/g, m => '-' + m.toLowerCase())
|
|
}
|
|
if (plumbing.indexOf(c) !== -1) {
|
|
return c
|
|
}
|
|
// first deref the abbrev, if there is one
|
|
// then resolve any aliases
|
|
// so `npm install-cl` will resolve to `install-clean` then to `ci`
|
|
let a = abbrevs[c]
|
|
while (aliases[a]) {
|
|
a = aliases[a]
|
|
}
|
|
return a || ''
|
|
}
|