UNPKG

tg-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>

64 lines (63 loc) 3.2 kB
"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"); var function_reflect_utils_1 = require("../utils/function-reflect-utils"); var ioc_utils_1 = require("../utils/ioc-utils"); var params_utils_1 = require("../utils/params-utils"); function TgCommand(constructor) { var instance = null; if (Reflect.getMetadata("instance", constructor.prototype)) { instance = Reflect.getMetadata("instance", constructor.prototype); } else { var paramTypes = function_reflect_utils_1.FunctionReflectUtils.getFunctionTypes(constructor); var paramNames = params_utils_1.ParamsUtils.getConstructorParamList(constructor); if (paramTypes) { for (var i = 0; i < paramTypes.length; i++) { if (!paramTypes[i]) { console.error(constructor.name + "\u6784\u9020\u51FD\u6570\u4E2D\u7684" + paramNames[i] + " \u4E0D\u80FD\u88AB\u6CE8\u5165,\n \u56E0\u4E3A" + paramNames[i] + " \u7C7B\u578B\u7684\u6784\u9020\u51FD\u6570\u4E2D\u53C8\u6CE8\u5165\u4E86" + constructor.name + "\u7684\u6210\u5458"); process.exit(-1); } } } var params = ioc_utils_1.IocUtils.iocInject(constructor, paramNames, paramTypes); instance = Reflect.construct(constructor, params); Reflect.defineMetadata("instance", instance, constructor.prototype); 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(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]; var result = commander_1.default.command(command.cmd).action(command.fn.bind(instance)); if (command.alias && command.alias.length > 0) { result = result.alias(command.alias); } if (command.description && command.description.length > 0) { result.description(command.description); } } } } exports.TgCommand = TgCommand;