UNPKG

api-types-cli

Version:

🚀 API 接口 TypeScript 类型生成器

55 lines (54 loc) 2.08 kB
import inquirer from 'inquirer'; import { ApiTypesGenerator } from '../../core/generator.js'; import { SUPPORTED_FORMATS } from '../../utils/constants.js'; import { EnhancedLogger } from '../../utils/logger.js'; export async function handleGenerateCommand(options) { try { // 验证格式参数 if (!SUPPORTED_FORMATS.includes(options.format)) { throw new Error(`不支持的格式: ${options.format}。支持的格式: ${SUPPORTED_FORMATS.join(', ')}`); } const generator = new ApiTypesGenerator({ ...options, parallel: parseInt(options.parallel), timeout: parseInt(options.timeout), retries: parseInt(options.retries) }); if (options.config) { await generator.generateFromConfig(options.config); } else { // 交互式单个接口生成 EnhancedLogger.section('交互式接口配置'); const { name, url } = await inquirer.prompt([ { type: 'input', name: 'name', message: '🏷️ 接口名称:', validate: (input) => generator.validateInterfaceName(input), filter: (input) => generator.toPascalCase(input) }, { type: 'input', name: 'url', message: '🌐 API URL:', validate: (input) => { try { new URL(input); return true; } catch { return '请输入有效的 URL'; } } } ]); await generator.generateFromApis([{ name, url }]); } } catch (error) { const message = error instanceof Error ? error.message : String(error); EnhancedLogger.error(`生成失败: ${message}`); process.exit(1); } }