63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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()
 | |
|     }
 | |
|   }
 | |
| }
 |