123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- const chalk = require('chalk')
- const padEnd = require('string.prototype.padend')
- const getPadLength = require('../util/getPadLength')
- module.exports = (api, options) => {
- api.registerCommand('help', args => {
- const command = args._[0]
- if (!command) {
- logMainHelp()
- } else {
- logHelpForCommand(command, api.service.commands[command])
- }
- })
- 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(padEnd(name, 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 name in opts.options) {
- console.log(` ${
- chalk.blue(padEnd(name, padLength))
- }${
- opts.options[name]
- }`)
- }
- }
- if (opts.details) {
- console.log()
- console.log(opts.details.split('\n').map(line => ` ${line}`).join('\n'))
- }
- console.log()
- }
- }
- }
|