import chalk from 'chalk' import path from 'path' import fse from 'fs-extra' import commander from 'commander' import { rc } from '../default/rc' import mockQuestion from '../inquirer/questions/mock' import apiQuestion, { chooseApi } from '../inquirer/questions/api' import { source } from '../inquirer/questions/core' import freeSwagger, { mock } from 'free-swagger' import { pick } from 'lodash' import { prompt } from '../inquirer' export function init(): void { const packageJsonPath = path.resolve(__dirname, '../../package.json') const pkg = JSON.parse(fse.readFileSync(packageJsonPath, 'utf-8')) commander .version(pkg.version) .usage('') .option('-r --reset', '重置为默认配置', () => { rc.reset() console.log(chalk.green('重置配置项成功')) }) .option('-s --show', '显示当前配置', () => { rc.show() }) .option('-e --edit', '修改当前配置', () => { rc.edit() }) .option('-m --mock', '全量生成 mock 数据', async () => { await prompt(mockQuestion) await mock(rc.createMockParams()) }) .option('-c, --config', '以配置项启动 free-swagger-cli', async () => { await prompt(apiQuestion) await freeSwagger(rc.createFreeSwaggerParams(), { onChooseApi: async ({ paths }) => pick(paths, ...(await chooseApi(paths))), }) }) // 无参数启动 .action(async ({ rawArgs }) => { if (!global.__DEV__ && rawArgs[2]) return await prompt([source]) await freeSwagger(rc.createFreeSwaggerParams()) }) .allowUnknownOption() .parse(process.argv) }