@auttam/easycli
Version:
A quick and easy way of creating cli for your npm package.
38 lines (37 loc) • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.commandDecoratorFactory = void 0;
const program_config_1 = require("../config/program-config");
const command_config_1 = require("../config/command-config");
const settings_1 = require("../settings");
function commandDecoratorFactory(commandDefinition) {
return function (target, propertyName, descriptor) {
if (!settings_1.SettingStore.enableCommands)
return;
var config = program_config_1.ProgramConfiguration.injectConfiguration(target);
config.decoratorsEnabled = true;
if (!commandDefinition) {
commandDefinition = {};
}
var command = config.commands.get(propertyName);
if (!command) {
command = new command_config_1.Command({
name: commandDefinition.name,
method: propertyName,
help: commandDefinition.help
});
command.params.initByMethod(descriptor.value);
}
if (commandDefinition.params && commandDefinition.params.length) {
var params = commandDefinition.params;
command.params.mergeByConfigs(params);
}
if (commandDefinition.options && commandDefinition.options.length) {
commandDefinition.options.forEach(definition => {
command.options.addByAny(definition);
});
}
config.commands.addByCommand(command);
};
}
exports.commandDecoratorFactory = commandDecoratorFactory;