jatg
Version:
Just Another Template Generator
37 lines • 1.41 kB
JavaScript
import prompts from 'prompts';
import { JatgError } from '../models/jatg-error.js';
async function promptTemplate(templates, composites) {
const names = new Set([
...composites.map(c => c.name),
...templates.map(t => t.name),
]);
if (names.size === 0)
throw new JatgError('No templates registered. Initialize one with "jatg --init"');
const { template } = await prompts({
name: 'template',
message: 'Template',
type: 'select',
choices: [...names].map(name => ({
value: name,
title: name,
})),
}, {
onCancel: () => { throw new JatgError('Generation canceled'); }
});
return template;
}
function findTemplatesByName(templates, composites, template) {
const composite = composites.find(c => c.name === template);
if (composite)
return composite.templates.flatMap(name => findTemplatesByName(templates, composites, name));
const singleTemplate = templates.find(t => t.name === template);
if (singleTemplate)
return [singleTemplate];
throw new JatgError(`Template "${template}" was not found`);
}
export async function pickTemplate(templates, composites, template) {
if (!template)
template = await promptTemplate(templates, composites);
return findTemplatesByName(templates, composites, template);
}
//# sourceMappingURL=pickTemplate.js.map