#!/usr/bin/env node
const { Command, Option } = require('commander');
const { create, validateCreateType } = require('./commands/create');
const { build } = require('./commands/build');
const { generateTheme } = require('./commands/generate-theme');
const { generateDts } = require('./commands/generate-dts');
const { release } = require('./commands/release');
const { codeCheck } = require('./commands/code-check');
const { VERSION, CREATE_SUPPORT_TYPES } = require('./shared/constant');
const program = new Command();
program
.command('create')
.description('创建一个组件模板或配置文件')
.option('-t --type <type>', `创建类型,可选值:${CREATE_SUPPORT_TYPES.join(', ')}`, validateCreateType)
.option('-e --env <env>', '环境,可选值:dev, prod')
.option('--ignore-parse-error', '忽略解析错误', false)
.option('--cover', '覆盖原文件', false)
.action(create);
program
.command('build')
.description('打包组件库')
.hook('postAction', generateTheme)
.action(build);
program
.command('generate:theme')
.description('生成主题变量文件')
.action(generateTheme);
program
.command('generate:dts')
.description('生成ts类型文件')
.action(generateDts);
program
.command('release')
.option('-v --version <version>', '版本号')
.description('发布npm包')
.action(release);
program
.command('code-check')
.option('-c --components <components>', '组件名称(支持英文逗号分隔)')
.addOption(new Option('-t --type <type>', '代码检查类型').choices(['eslint', 'unit-test']))
.description('代码检查')
.action(codeCheck);
program.parse().version(VERSION);