import 'dart:io'; import 'commands/base_command.dart'; import 'commands/generate_command.dart'; import 'core/config.dart'; import 'utils/string_utils.dart'; /// Swagger CLI 应用程序 /// 使用命令模式架构的新版本CLI工具 class SwaggerCLI { final Map _commands = {}; SwaggerCLI() { _registerCommands(); } /// 注册所有命令 void _registerCommands() { _registerCommand(GenerateCommand()); // 未来可以添加更多命令: // _registerCommand(ParseCommand()); // _registerCommand(ValidateCommand()); // _registerCommand(InfoCommand()); // _registerCommand(TestCommand()); // _registerCommand(CleanCommand()); } /// 注册单个命令 void _registerCommand(BaseCommand command) { _commands[command.name] = command; } /// 运行CLI应用程序 Future run(List arguments) async { try { _showBanner(); if (arguments.isEmpty || arguments.first == 'help' || arguments.first == '--help') { _showHelp(); return 0; } final commandName = arguments.first; final commandArgs = arguments.length > 1 ? arguments.sublist(1) : []; // 检查特殊命令 if (commandName == 'version' || commandName == '--version') { _showVersion(); return 0; } // 查找并执行命令 final command = _commands[commandName]; if (command == null) { print('❌ 未知命令: $commandName'); print(''); _showAvailableCommands(); return 1; } // 检查命令帮助 if (commandArgs.contains('--help') || commandArgs.contains('-h')) { command.showHelp(); return 0; } // 执行命令 final stopwatch = Stopwatch()..start(); final exitCode = await command.execute(commandArgs); stopwatch.stop(); // 显示执行时间 if (exitCode == 0) { print(''); print('⏱️ 执行时间: ${StringUtils.formatDuration(stopwatch.elapsed)}'); } return exitCode; } catch (error, stackTrace) { print('❌ 应用程序错误: $error'); print('堆栈跟踪: $stackTrace'); return 1; } } /// 显示应用程序横幅 void _showBanner() { print(''); print('🚀 Swagger API 代码生成器 v2.0'); print('====================================='); print('强大的 Swagger API 代码生成工具'); print(''); } /// 显示帮助信息 void _showHelp() { print('用法: dart swagger_cli_new.dart <命令> [选项]'); print(''); print('全新的命令式架构,提供更好的可扩展性和用户体验。'); print(''); _showAvailableCommands(); _showGlobalOptions(); _showExamples(); _showContact(); } /// 显示可用命令 void _showAvailableCommands() { print('📋 可用命令:'); print(''); for (final command in _commands.values) { print(' ${command.name.padRight(12)} ${command.description}'); } print(' help 显示帮助信息'); print(' version 显示版本信息'); print(''); } /// 显示全局选项 void _showGlobalOptions() { print('🔧 全局选项:'); print(' -h, --help 显示帮助信息'); print(' --version 显示版本信息'); print(''); } /// 显示使用示例 void _showExamples() { print('💡 使用示例:'); print(''); print(' # 生成所有文件'); print(' dart swagger_cli_new.dart generate --all'); print(''); print(' # 只生成模型文件(简洁版本)'); print(' dart swagger_cli_new.dart generate --models --simple'); print(''); print(' # 生成到指定目录并启用性能监控'); print( ' dart swagger_cli_new.dart generate --all --output-dir lib/generated --performance', ); print(''); print(' # 查看具体命令的帮助'); print(' dart swagger_cli_new.dart generate --help'); print(''); } /// 显示联系信息 void _showContact() { print('🌐 更多信息:'); print(' API文档: ${SwaggerConfig.swaggerJsonUrl}'); print(' 基础URL: ${SwaggerConfig.baseUrl}'); print(''); } /// 显示版本信息 void _showVersion() { print('Swagger CLI v2.0.0'); print('构建于: ${DateTime.now().toIso8601String()}'); print('Dart SDK: ${Platform.version}'); print(''); print('功能特性:'); print('- 🏗️ 模块化命令架构'); print('- 🚀 性能监控和优化'); print('- 🔍 智能类型验证'); print('- 📋 详细的错误报告'); print('- 💾 智能缓存机制'); print('- 📚 丰富的文档生成'); print(''); } /// 格式化持续时间 // 已移动到 StringUtils.formatDuration /// 获取可用命令列表 List get availableCommands => _commands.keys.toList(); /// 获取特定命令 BaseCommand? getCommand(String name) => _commands[name]; } /// CLI应用程序入口点 Future main(List arguments) async { final cli = SwaggerCLI(); final exitCode = await cli.run(arguments); exit(exitCode); }