generator-svalter
Version:
Generator to help you create and manage svelte/sapper application
96 lines (88 loc) • 2.98 kB
JavaScript
;
const patterns = require('./patterns.json');
module.exports = {
buildDefaultQuestions: function (generator) {
return [
{
type: 'input',
name: 'path',
message: "Route's path: ",
when: function () {
if (generator.options.path == null) {
return true;
}
generator.options.path = generator.options.path.trim();
return generator.options.path === '';
},
validate: function (input) {
if (input == null) {
return false;
}
input = input.trim();
if (input === '') {
return 'You cannot enter an empty string';
}
return true;
},
},
{
type: 'confirm',
name: 'page-component',
message: 'Do you want to generate a page svelte component ?',
default: true,
when: function (answers) {
return generator.options.page == null;
},
},
{
type: 'confirm',
name: 'page-layout',
default: false,
message: 'Do you want to generate a page layout ?',
when: function (answers) {
if (generator.options.layout == null) {
if (generator.options.page === true || answers['page-component'] === true) {
return true;
}
}
return false;
},
},
{
type: 'confirm',
name: 'json-api',
message: 'Do you want to generate a json api ?',
default: false,
when: function () {
return generator.options.api == null;
},
},
];
},
/**
*
* @param {Generator}generator
* @param {string[]} pathVariables
*/
buildPathVariablesQuestions: function (generator, pathVariables) {
const patternsQuestions = [];
let i = 0;
pathVariables.forEach((variable) => {
patternsQuestions.push({
...patternQuestionTemplate,
name: `pattern-${i++}`,
message: `Do you want to use a pattern for your variable "${variable}" ?`,
});
});
return patternsQuestions;
},
};
const patternQuestionTemplate = {
type: 'list',
name: 'pattern',
message: 'Do you want to use a predefined pattern in your route?',
choices: patterns.map((p) => {
return { name: p.display, value: p.key };
}),
default: 'none',
};