63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								const { notEmpty } = require('../utils.js')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = {
							 | 
						||
| 
								 | 
							
								  description: 'generate store',
							 | 
						||
| 
								 | 
							
								  prompts: [{
							 | 
						||
| 
								 | 
							
								    type: 'input',
							 | 
						||
| 
								 | 
							
								    name: 'name',
							 | 
						||
| 
								 | 
							
								    message: 'store name please',
							 | 
						||
| 
								 | 
							
								    validate: notEmpty('name')
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    type: 'checkbox',
							 | 
						||
| 
								 | 
							
								    name: 'blocks',
							 | 
						||
| 
								 | 
							
								    message: 'Blocks:',
							 | 
						||
| 
								 | 
							
								    choices: [{
							 | 
						||
| 
								 | 
							
								      name: 'state',
							 | 
						||
| 
								 | 
							
								      value: 'state',
							 | 
						||
| 
								 | 
							
								      checked: true
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      name: 'mutations',
							 | 
						||
| 
								 | 
							
								      value: 'mutations',
							 | 
						||
| 
								 | 
							
								      checked: true
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      name: 'actions',
							 | 
						||
| 
								 | 
							
								      value: 'actions',
							 | 
						||
| 
								 | 
							
								      checked: true
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    validate(value) {
							 | 
						||
| 
								 | 
							
								      if (!value.includes('state') || !value.includes('mutations')) {
							 | 
						||
| 
								 | 
							
								        return 'store require at least state and mutations'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      return true
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  ],
							 | 
						||
| 
								 | 
							
								  actions(data) {
							 | 
						||
| 
								 | 
							
								    const name = '{{name}}'
							 | 
						||
| 
								 | 
							
								    const { blocks } = data
							 | 
						||
| 
								 | 
							
								    const options = ['state', 'mutations']
							 | 
						||
| 
								 | 
							
								    const joinFlag = `,
							 | 
						||
| 
								 | 
							
								  `
							 | 
						||
| 
								 | 
							
								    if (blocks.length === 3) {
							 | 
						||
| 
								 | 
							
								      options.push('actions')
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const actions = [{
							 | 
						||
| 
								 | 
							
								      type: 'add',
							 | 
						||
| 
								 | 
							
								      path: `src/store/modules/${name}.js`,
							 | 
						||
| 
								 | 
							
								      templateFile: 'plop-templates/store/index.hbs',
							 | 
						||
| 
								 | 
							
								      data: {
							 | 
						||
| 
								 | 
							
								        options: options.join(joinFlag),
							 | 
						||
| 
								 | 
							
								        state: blocks.includes('state'),
							 | 
						||
| 
								 | 
							
								        mutations: blocks.includes('mutations'),
							 | 
						||
| 
								 | 
							
								        actions: blocks.includes('actions')
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }]
							 | 
						||
| 
								 | 
							
								    return actions
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |