PromucFlow_constructor/app/client/generators/widget/index.js
2021-09-09 20:40:22 +05:30

64 lines
1.6 KiB
JavaScript

"use strict";
const widgetExists = require("../utils/widgetExists");
module.exports = {
description: "Add a widget",
prompts: [
{
type: "input",
name: "name",
message:
"What should the widget be called? (Donot suffix `Widget` to the name)",
default: "Button",
validate: (inputValue) => {
const value = `${inputValue}Widget`;
if (/.+/.test(value)) {
return widgetExists(value)
? "A widget with this name already exists"
: true;
}
return "The widget name is required";
},
},
],
actions: (data) => {
// Generate index.ts and index.test.ts
const actions = [
{
type: "add",
path: "../src/widgets/{{suffixed name}}/index.ts",
templateFile: "./widget/templates/index.js.hbs",
abortOnFail: true,
},
{
type: "add",
path: "../src/widgets/{{suffixed name}}/widget/index.tsx",
templateFile: "./widget/templates/widget/index.js.hbs",
abortOnFail: true,
},
{
type: "add",
path: "../src/widgets/{{suffixed name}}/component/index.tsx",
templateFile: "./widget/templates/component/index.js.hbs",
abortOnFail: true,
},
{
type: "add",
path: "../src/widgets/{{suffixed name}}/constants.ts",
templateFile: "./widget/templates/constants.js.hbs",
abortOnFail: true,
},
{
type: "add",
path: "../src/widgets/{{suffixed name}}/icon.svg",
templateFile: "./widget/templates/icon.svg.hbs",
abortOnFail: true,
},
];
return actions;
},
};