@luban-cli/cli-plugin-service
Version:
A development runtime environment dependency
74 lines • 2.56 kB
JavaScript
;
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