tg2-commander
Version:
<p align="center"><img src="https://github.com/stone-jin/tg-commander/raw/master/assets/logo.png" alt="tg-commander logo" width="150px" height="150px"></p>
79 lines (78 loc) • 3.02 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var commander_1 = __importDefault(require("commander"));
require("reflect-metadata");
function Command(hello) {
return function (target, methodName, descriptor) {
var original = descriptor.value;
var args = Reflect.getMetadata("Command", target) || [];
if (typeof hello === 'string') {
var result = {
cmd: hello,
fn: original
};
Reflect.defineMetadata("Command", args.concat([result]), target);
}
else {
var result = { cmd: '', fn: original };
result = Object.assign(result, hello);
Reflect.defineMetadata("Command", args.concat([result]), target);
}
};
}
exports.Command = Command;
function TgCommand(constructor) {
var instance = null;
if (Reflect.getMetadata("instance", constructor.prototype)) {
instance = Reflect.getMetadata("instance", constructor.prototype);
}
else {
instance = new constructor();
}
var options = Reflect.getMetadata("tgOptions", constructor.prototype);
var _loop_1 = function (option) {
if (option.name.indexOf("[") >= 0) {
commander_1.default.option(option.name, option.description, function (arg1, arg2) {
instance[option.to] = arg1;
});
instance[option.to] = option.defaultValue;
}
else {
var result = /\-\-(\w+)/.exec(option.name);
commander_1.default.option(option.name, option.description, function (v, total) {
console.log("-----");
console.log(total);
console.log(commander_1.default.online);
}, option.defaultValue);
instance[option.to] = commander_1.default[result[1]];
}
};
for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
var option = options_1[_i];
_loop_1(option);
}
var commands = Reflect.getMetadata("Command", constructor.prototype);
for (var _a = 0, commands_1 = commands; _a < commands_1.length; _a++) {
var command = commands_1[_a];
commander_1.default.command(command.cmd).action(command.fn.bind(instance)).description(command.description);
}
commander_1.default.parse(process.argv);
}
exports.TgCommand = TgCommand;
function TgOptions(name, description, defaultValue) {
return function (target, propertyKey) {
var options = Reflect.getMetadata("tgOptions", target) || [];
var option = {
name: name,
description: description,
to: propertyKey,
defaultValue: defaultValue
};
Reflect.defineMetadata("tgOptions", options.concat([option]), target);
};
}
exports.TgOptions = TgOptions;