installerbuilder/tasks/task20-命令行界面.md

188 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 任务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
```