UNPKG

@nodearch/command

Version:
55 lines 2.32 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { Logger, Service } from '@nodearch/core'; import inquirer from 'inquirer'; let CommandParser = class CommandParser { constructor(logger) { this.logger = logger; } getYargsCommands(commands) { return commands.map(cmd => { const { handler, questions, ...commandOptions } = cmd; const handlerFn = (args) => this.handlerFactory(cmd, args); if (commandOptions.builder && typeof commandOptions.builder === 'function') { commandOptions.builder = commandOptions.builder.bind(cmd); } return { ...commandOptions, handler: handlerFn }; }); } async handlerFactory(command, args) { try { const validQuestions = []; let answers; if (command.questions) { for (const question of command.questions) { if (!args || (question.name && !args[question.name])) validQuestions.push(question); } } if (validQuestions) answers = await inquirer.prompt(validQuestions); const data = { ...args, ...answers }; await command.handler.bind(command)(data); } catch (e) { this.logger.error(e); process.exit(1); } } }; CommandParser = __decorate([ Service(), __metadata("design:paramtypes", [Logger]) ], CommandParser); export { CommandParser }; //# sourceMappingURL=command-parser.js.map