#!/usr/bin/env node
import { Command, Option } from 'commander'
import { buildUi, buildEntry, buildRuntime, chartTheme } from './commands/build'
import { releaseAurora } from './commands/release/releaseAurora'
import { releaseAlpha } from './commands/release/releaseAlpha'
import { releaseE2EConfig } from './commands/release/releaseE2EConfig'
const program = new Command()
program
.command('release:aurora')
.description('转换为aurora的包')
.option('-v3, --vue3version', '是否使用vue3版本', false)
.action(releaseAurora)
program
.command('release:alpha')
.description('转换为组织名为@opentinyvue的包')
.option('-u, --updateVersion', '是否自动升级patch版本号', false)
.action(releaseAlpha)
program
.command('release:e2eConfig')
.description('定制E2E测试配置的origin源')
.addOption(new Option('-o --origin <origin>', 'origin源地址'))
.action(releaseE2EConfig)
program.command('build:entry').description('生成组件库入口').action(buildEntry)
program.command('build:chartTheme').description('切换chart主题').action(chartTheme)
program
.command('build:ui')
.description('打包组件库')
.argument('[names...]', '构建指定组件,如 button alert;不指定则构建全量组件')
.addOption(new Option('-v --vue-versions <vueVersions...>', '目标框架,默认所有').choices(['2', '2.7', '3']))
.addOption(new Option('-f --formats <formats...>', '目标格式,默认 ["es"]').choices(['es', 'cjs']))
.addOption(new Option('-t --build-target <buildTarget>', '组件的目标版本'))
.addOption(new Option('-d --design <design>', '构建的目标设计规范'))
.option('-s, --scope <scope>', 'npm scope,默认是 opentiny,会以 @opentiny 发布到 npm')
.option('-c, --clean', '清空构建目录')
.option('--no-dts', '不生成 dts')
.action(buildUi)
program
.command('build:runtime')
.description('打包组件 runtime 包')
.addOption(new Option('-v --vue-versions <vueVersions...>', '目标框架,默认所有').choices(['2', '2.7', '3']))
.option('-m, --min', '是否压缩输出文件', false)
.option('-vi, --isVisualizer', '是否分析打包产物', false)
.option('--tiny_mode', '输出的模板类型', 'pc')
.action(buildRuntime)
program.parse()