UNPKG

templates-mo

Version:

Templates is a scaffolding framework that makes code generation simple, dynamic, and reusable. Generate files, parts of your app, or whole project structures—without the repetitive copy-pasting

42 lines (41 loc) • 1.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCliArgsFromTemplate = void 0; const change_case_1 = require("change-case"); const templates_1 = __importDefault(require("../../templates")); const getCliArgsFromTemplate = (template) => { const tps = new templates_1.default(template); // eslint-disable-next-line no-underscore-dangle if (!(tps === null || tps === void 0 ? void 0 : tps._prompts)) return {}; // eslint-disable-next-line no-underscore-dangle const templateOptions = tps._prompts.prompts.map((prompt) => { const type = (() => { var _a; switch ((_a = prompt.type) !== null && _a !== void 0 ? _a : 'input') { case 'confirm': return 'boolean'; case 'input': case 'list': case 'rawlist': case 'password': return 'string'; case 'checkbox': return 'array'; default: throw new Error(`Unsupported type: ${prompt.type}`); } })(); return Object.assign(Object.assign({ describe: prompt.description, type, name: prompt.name, alias: prompt.aliases }, ((prompt === null || prompt === void 0 ? void 0 : prompt.choices) && { choices: prompt.choices })), { // TODO: Will need to strip `tps-` prefix off of third party templates group: `${(0, change_case_1.sentenceCase)(tps.template)}:`, demandOption: false }); }); return templateOptions === null || templateOptions === void 0 ? void 0 : templateOptions.reduce((acc, next) => { acc[next.name] = next; return acc; }, {}); }; exports.getCliArgsFromTemplate = getCliArgsFromTemplate;