188 lines
4.6 KiB
Markdown
188 lines
4.6 KiB
Markdown
# 任务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
|
||
``` |