# 任务20:命令行界面 ## 任务描述 实现命令行界面,用于与用户交互,接收命令行参数,调用构建协调器等功能。命令行界面将作为用户与安装包构建系统交互的主要入口,提供友好的命令行体验和丰富的功能选项。 ## 实现步骤 1. 设计命令行结构: - 在`cmd/installerbuilder`包中创建`main.go`文件 - 使用cobra库设计命令行结构: ```go func main() { rootCmd := &cobra.Command{ Use: "installerbuilder", Short: "A tool for building cross-platform installers", Long: `InstallerBuilder is a comprehensive tool for building installation packages for multiple platforms and package formats.`, } // 添加子命令 rootCmd.AddCommand(buildCmd()) rootCmd.AddCommand(validateCmd()) rootCmd.AddCommand(versionCmd()) if err := rootCmd.Execute(); err != nil { fmt.Println(err) os.Exit(1) } } ``` 2. 实现构建命令: - 创建buildCmd函数,实现构建命令 - 定义命令行参数和选项 - 调用构建协调器 - 处理构建结果 - 提供进度反馈 3. 实现验证命令: - 创建validateCmd函数,实现验证命令 - 验证配置文件 - 显示验证结果 - 提供详细的错误信息 4. 实现版本命令: - 创建versionCmd函数,实现版本命令 - 显示应用版本信息 - 显示构建信息 - 显示系统信息 5. 实现初始化命令: - 创建initCmd函数,实现初始化命令 - 创建配置文件模板 - 初始化项目结构 - 提供交互式配置 6. 实现帮助和文档: - 为所有命令添加详细的帮助信息 - 实现命令示例 - 提供命令行自动补全 - 实现命令行文档生成 7. 实现日志和输出控制: - 创建日志配置 - 支持不同的输出级别 - 支持输出到文件 - 实现彩色输出 8. 实现错误处理: - 创建错误处理机制 - 提供友好的错误信息 - 支持调试模式 - 实现错误代码 ## 单元测试要求 1. 测试命令行解析: - 验证参数解析 - 测试选项处理 - 测试默认值 - 测试参数验证 2. 测试构建命令: - 验证构建命令 - 测试参数传递 - 测试协调器调用 - 测试结果处理 3. 测试验证命令: - 验证验证命令 - 测试配置验证 - 测试结果显示 - 测试错误信息 4. 测试版本命令: - 验证版本命令 - 测试版本信息 - 测试构建信息 - 测试系统信息 5. 测试初始化命令: - 验证初始化命令 - 测试模板创建 - 测试项目结构 - 测试交互式配置 6. 测试帮助和文档: - 验证帮助信息 - 测试命令示例 - 测试自动补全 - 测试文档生成 7. 测试日志和输出: - 验证日志配置 - 测试输出级别 - 测试文件输出 - 测试彩色输出 8. 测试错误处理: - 验证错误处理 - 测试错误信息 - 测试调试模式 - 测试错误代码 ## 依赖关系 - 依赖任务01(项目初始化) - 依赖任务02(日志系统实现) - 依赖任务03(错误处理框架) - 依赖任务05(配置模型定义) - 依赖任务08(配置验证器) - 依赖任务19(默认构建协调器) ## 完成标准 1. 命令行界面结构设计合理 2. 构建命令功能正常工作 3. 验证命令功能正常工作 4. 版本命令功能正常工作 5. 初始化命令功能正常工作 6. 帮助和文档功能完善 7. 日志和输出控制功能正常工作 8. 错误处理机制健壮 9. 所有单元测试通过 10. 代码符合项目的Go语言开发规范 11. 命令行界面提供友好的用户体验 12. 支持所有需求文档中的命令行相关功能 ## 使用示例 1. 构建安装包: ``` installerbuilder build --config config.yaml --platform windows --arch amd64 --type msi --output ./output ``` 2. 验证配置: ``` installerbuilder validate --config config.yaml ``` 3. 显示版本信息: ``` installerbuilder version ``` 4. 初始化项目: ``` installerbuilder init --name myapp --version 1.0.0 ``` 5. 显示帮助信息: ``` installerbuilder --help ``` 6. 显示构建命令帮助: ``` installerbuilder build --help ``` 7. 构建多个平台的安装包: ``` installerbuilder build --config config.yaml --platform windows,linux --arch amd64 --type msi,deb,rpm ``` 8. 使用详细输出: ``` installerbuilder build --config config.yaml --verbose ```