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
JavaScript
;
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;