Files
webawesome/scripts/plop/plopfile.js
2024-06-21 13:38:48 -04:00

56 lines
1.6 KiB
JavaScript

export default function (plop) {
plop.setHelper('tagWithoutPrefix', tag => tag.replace(/^wa-/, ''));
plop.setHelper('tagToTitle', tag => {
const withoutPrefix = plop.getHelper('tagWithoutPrefix');
const titleCase = plop.getHelper('titleCase');
return titleCase(withoutPrefix(tag).replace(/-/g, ' '));
});
plop.setGenerator('component', {
description: 'Generate a new component',
prompts: [
{
type: 'input',
name: 'tag',
message: 'Tag name? (e.g. wa-button)',
validate: value => {
// Start with wa- and include only a-z + dashes
if (!/^wa-[a-z-+]+/.test(value)) {
return false;
}
// No double dashes or ending dash
if (value.includes('--') || value.endsWith('-')) {
return false;
}
return true;
}
}
],
actions: [
{
type: 'add',
path: '../../src/components/{{ tagWithoutPrefix tag }}/{{ tagWithoutPrefix tag }}.ts',
templateFile: 'templates/component/component.hbs'
},
{
type: 'add',
path: '../../src/components/{{ tagWithoutPrefix tag }}/{{ tagWithoutPrefix tag }}.styles.ts',
templateFile: 'templates/component/styles.hbs'
},
{
type: 'add',
path: '../../src/components/{{ tagWithoutPrefix tag }}/{{ tagWithoutPrefix tag }}.test.ts',
templateFile: 'templates/component/tests.hbs'
},
{
type: 'add',
path: '../../docs/docs/components/{{ tagWithoutPrefix tag }}.md',
templateFile: 'templates/component/docs.hbs'
}
]
});
}