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

deref-command.js « utils « lib - github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 0a3c8c90bc903dc70cca75550ed27709d12746d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// de-reference abbreviations and shorthands into canonical command name

const { aliases, cmdList, plumbing } = require('./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 || ''
}