|
@@ -0,0 +1,55 @@
|
|
|
+const { notEmpty } = require('../utils.js')
|
|
|
+
|
|
|
+module.exports = {
|
|
|
+ description: 'generate a view',
|
|
|
+ prompts: [{
|
|
|
+ type: 'input',
|
|
|
+ name: 'name',
|
|
|
+ message: 'view name please',
|
|
|
+ validate: notEmpty('name')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: 'checkbox',
|
|
|
+ name: 'blocks',
|
|
|
+ message: 'Blocks:',
|
|
|
+ choices: [{
|
|
|
+ name: '<template>',
|
|
|
+ value: 'template',
|
|
|
+ checked: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '<script>',
|
|
|
+ value: 'script',
|
|
|
+ checked: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'style',
|
|
|
+ value: 'style',
|
|
|
+ checked: true
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ validate(value) {
|
|
|
+ if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
|
|
|
+ return 'View require at least a <script> or <template> tag.'
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ actions: data => {
|
|
|
+ const name = '{{name}}'
|
|
|
+ const actions = [{
|
|
|
+ type: 'add',
|
|
|
+ path: `src/views/${name}/index.vue`,
|
|
|
+ templateFile: 'plop-templates/view/index.hbs',
|
|
|
+ data: {
|
|
|
+ name: name,
|
|
|
+ template: data.blocks.includes('template'),
|
|
|
+ script: data.blocks.includes('script'),
|
|
|
+ style: data.blocks.includes('style')
|
|
|
+ }
|
|
|
+ }]
|
|
|
+
|
|
|
+ return actions
|
|
|
+ }
|
|
|
+}
|