You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.7 KiB
63 lines
1.7 KiB
3 years ago
|
const { chalk } = require('@vue/cli-shared-utils')
|
||
|
const getPadLength = require('../util/getPadLength')
|
||
|
|
||
|
module.exports = (api, options) => {
|
||
|
api.registerCommand('help', args => {
|
||
|
const commandName = args._[0]
|
||
|
if (!commandName) {
|
||
|
logMainHelp()
|
||
|
} else {
|
||
|
logHelpForCommand(commandName, api.service.commands[commandName])
|
||
|
}
|
||
|
})
|
||
|
|
||
|
function logMainHelp () {
|
||
|
console.log(
|
||
|
`\n Usage: vue-cli-service <command> [options]\n` +
|
||
|
`\n Commands:\n`
|
||
|
)
|
||
|
const commands = api.service.commands
|
||
|
const padLength = getPadLength(commands)
|
||
|
for (const name in commands) {
|
||
|
if (name !== 'help') {
|
||
|
const opts = commands[name].opts || {}
|
||
|
console.log(` ${
|
||
|
chalk.blue(name.padEnd(padLength))
|
||
|
}${
|
||
|
opts.description || ''
|
||
|
}`)
|
||
|
}
|
||
|
}
|
||
|
console.log(`\n run ${
|
||
|
chalk.green(`vue-cli-service help [command]`)
|
||
|
} for usage of a specific command.\n`)
|
||
|
}
|
||
|
|
||
|
function logHelpForCommand (name, command) {
|
||
|
if (!command) {
|
||
|
console.log(chalk.red(`\n command "${name}" does not exist.`))
|
||
|
} else {
|
||
|
const opts = command.opts || {}
|
||
|
if (opts.usage) {
|
||
|
console.log(`\n Usage: ${opts.usage}`)
|
||
|
}
|
||
|
if (opts.options) {
|
||
|
console.log(`\n Options:\n`)
|
||
|
const padLength = getPadLength(opts.options)
|
||
|
for (const [flags, description] of Object.entries(opts.options)) {
|
||
|
console.log(` ${
|
||
|
chalk.blue(flags.padEnd(padLength))
|
||
|
}${
|
||
|
description
|
||
|
}`)
|
||
|
}
|
||
|
}
|
||
|
if (opts.details) {
|
||
|
console.log()
|
||
|
console.log(opts.details.split('\n').map(line => ` ${line}`).join('\n'))
|
||
|
}
|
||
|
console.log()
|
||
|
}
|
||
|
}
|
||
|
}
|