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.
62 lines
1.7 KiB
62 lines
1.7 KiB
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() |
|
} |
|
} |
|
}
|
|
|