// eslint-disable-next-line @typescript-eslint/no-var-requires
const { notEmpty } = require('../utils');

module.exports = {
  description: 'generate Vue3 component',
  prompts: [
    {
      type: 'input',
      name: 'name',
      message: 'component 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 'Components require at least a script or template tag.';
        }
        return true;
      }
    }
  ],
  actions: data => {
    const name = '{{properCase name}}';
    return [
      {
        type: 'add',
        path: `src/components/${name}/${name}.vue`,
        templateFile: 'templates/component/index.hbs',
        data: {
          name: name,
          template: data.blocks.includes('template'),
          script: data.blocks.includes('script'),
          style: data.blocks.includes('style')
        }
      }
    ];
  }
};