@lakutata/cli
Version:
Lakutata CLI tool
62 lines (61 loc) • 2.48 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConvertDTO2Inquirer = void 0;
const inquirer_1 = __importDefault(require("inquirer"));
async function ConvertDTO2Inquirer(dto) {
const jsonSchema = dto.toOpenAPIJsonSchema();
const prompts = [];
for (const propertyName in jsonSchema.properties) {
const propertyInfo = jsonSchema.properties[propertyName];
const propertyRequired = Array.isArray(jsonSchema.required) && jsonSchema.required.includes(propertyName);
switch (propertyInfo.type) {
case 'boolean':
{
prompts.push({
name: propertyName,
type: 'confirm',
message: propertyInfo.description || '',
default: propertyInfo.default,
required: propertyRequired
});
}
break;
case 'string':
default: {
if (propertyInfo.enum) {
const enums = propertyInfo.enum.filter(value => !!value);
prompts.push({
name: propertyName,
type: 'list',
message: propertyInfo.description || '',
required: propertyRequired,
choices: enums.map((value) => ({
name: value,
value: value
}))
});
}
else {
prompts.push({
name: propertyName,
type: 'input',
message: propertyInfo.description || '',
default: propertyInfo.default,
required: propertyRequired,
validate: (input) => {
if (propertyInfo.pattern) {
return new RegExp(propertyInfo.pattern).test(input);
}
return true;
}
});
}
}
}
}
return inquirer_1.default.prompt(prompts);
}
exports.ConvertDTO2Inquirer = ConvertDTO2Inquirer;