UNPKG

@luban-cli/cli-plugin-service

Version:
74 lines 2.56 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.isObject = void 0; const chalk_1 = __importDefault(require("chalk")); function isObject(value) { return Object.prototype.toString.call(value) === "[object Object]"; } exports.isObject = isObject; function getPadLength(obj) { let longest = 10; for (const name in obj) { if (name.length + 1 > longest) { longest = name.length + 1; } } return longest; } function logMainHelp(commands) { console.log(`\n Usage: luban-cli-service <command> [options]\n` + `\n Commands:\n`); const padLength = getPadLength(commands); for (const name in commands) { if (name !== "help") { const opts = commands[name].opts || {}; console.log(` ${chalk_1.default.blue(name.padEnd(padLength))}${opts.description || ""}`); } } console.log(`\n run ${chalk_1.default.green(`luban-cli-service help [command]`)} for usage of a specific command.\n`); } function logHelpForCommand(name, command) { if (!command) { console.log(chalk_1.default.red(`\n command "${name}" unregistered.`)); } else if (isObject(command.opts)) { const opts = command.opts || {}; if (opts.usage) { console.log(`\n Usage: ${opts.usage}`); } if (isObject(opts.options)) { console.log(`\n Options:\n`); const padLength = getPadLength(opts.options); for (const [flags, description] of Object.entries(opts.options)) { console.log(` ${chalk_1.default.blue(flags.padEnd(padLength))}${description}`); } } if (typeof opts.details === "string") { console.log(); console.log(opts.details .split("\n") .map((line) => ` ${line}`) .join("\n")); } console.log(); } } class Help { apply(params) { const { api, args } = params; api.registerCommand("help", () => { const commandName = args._[0]; const commands = api.getRegisteredCommands(); if (!commandName) { logMainHelp(commands); } else { logHelpForCommand(commandName, commands[commandName]); } }); } } exports.default = Help; //# sourceMappingURL=help.js.map