UNPKG

beyond

Version:

The Full Stack Universal Typescript Framework

110 lines (102 loc) 2.78 kB
require('colors'); const { resolve } = require('path'); const service = new (require('beyond/inspect-service'))(); module.exports = async () => { const { project } = service.builder; const response = await project.validate({ cwd: resolve(process.cwd()) }); if (response.error) { console.log(`${response.error}`.red); return; } const fields = [ { type: 'input', name: 'name', prefix: '', message: 'Package subpath:'.cyan, validate(value) { return value.length ? true : 'It cannot be empty. Please enter it correctly...'; }, }, { type: 'list', name: 'bundles', prefix: '', message: 'Module type:'.cyan, choices: ['page', 'widget', 'layout', 'code', 'bridge', 'ts', 'start'], }, { type: 'input', name: 'element.name', prefix: '', message: 'Web component name:'.cyan, when(answers) { return ['page', 'widget', 'layout'].includes(answers.bundles); }, validate(value) { if (!value) return 'It cannot be empty. Please enter it correctly...'; const error = 'The web component name must be has the next structure: "web-component"'; return !value.match(/[a-z]+-[a-z]+/g) ? error : true; }, }, { type: 'input', name: 'route', prefix: '', message: 'Page URL:'.cyan, when(answers) { return answers.bundles === 'page'; }, validate(value) { return value.length ? true : 'It cannot be empty. Please enter it correctly...'; }, }, { type: 'input', name: 'description', prefix: '', message: 'About:'.cyan, }, { type: 'confirm', name: 'styles', prefix: '', message: 'Styles?'.cyan, when(answers) { const bundles = ['bridge', 'ts', 'start']; return !bundles.includes(answers.bundles); }, default: false, }, { type: 'confirm', name: 'multilanguage', prefix: '', message: 'Multilanguage?'.cyan, when(answers) { const bundles = ['bridge', 'ts', 'start']; return !bundles.includes(answers.bundles); }, default: false, }, ]; const run = async specs => { specs.cwd = resolve(process.cwd()); specs.bundles = [specs.bundles]; specs.processors = ['ts']; specs.styles && specs.processors.push('scss'); if (specs.route && !specs.route.startsWith('/')) { specs.route = `/${specs.route}`; } const { modules } = service.builder; console.log('Building module...'); specs.noDeclaration = true; const response = await modules.create(specs); if (response.error) { console.log(`Module not created:`.red, response.error); return; } console.log(`Module "${specs.name}"`, `created successfully`.green); }; require('inquirer').prompt(fields).then(run); };