UNPKG

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
#!/usr/bin/env node "use strict"; 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;