installerbuilder/tasks/task21-配置模板生成器.md

171 lines
5.2 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.

# 任务21配置模板生成器
## 任务描述
实现配置模板生成器用于生成安装包构建的配置文件模板。配置模板生成器将帮助用户快速创建符合要求的配置文件包括YAML和JSON格式并提供不同类型应用程序的模板选项。
## 实现步骤
1. 定义模板生成器接口:
- 在`internal/template`包中创建`generator.go`文件
- 定义TemplateGenerator接口
```go
type TemplateGenerator interface {
// Generate 生成配置模板
Generate(options GenerateOptions) error
// GetAvailableTemplates 获取可用的模板类型
GetAvailableTemplates() []TemplateInfo
}
```
- 定义GenerateOptions结构体
```go
type GenerateOptions struct {
TemplateName string // 模板名称
OutputPath string // 输出路径
Format string // 输出格式 (yaml, json)
AppName string // 应用名称
AppVersion string // 应用版本
Description string // 应用描述
Author string // 作者信息
License string // 许可证信息
Platforms []string // 目标平台
Architectures []string // 目标架构
PackageTypes []string // 包类型
Variables map[string]string // 自定义变量
}
```
- 定义TemplateInfo结构体
```go
type TemplateInfo struct {
Name string // 模板名称
Description string // 模板描述
Category string // 模板类别
Tags []string // 模板标签
}
```
2. 创建默认模板生成器:
- 创建`default_generator.go`文件
- 定义DefaultTemplateGenerator结构体实现TemplateGenerator接口
```go
type DefaultTemplateGenerator struct {
templates map[string]string
logger log.Logger
resourceMgr resource.ResourceManager
}
```
- 实现构造函数:
```go
func NewDefaultTemplateGenerator(logger log.Logger, resourceMgr resource.ResourceManager) *DefaultTemplateGenerator {
generator := &DefaultTemplateGenerator{
templates: make(map[string]string),
logger: logger,
resourceMgr: resourceMgr,
}
// 注册内置模板
generator.registerBuiltinTemplates()
return generator
}
```
3. 实现模板注册:
- 创建registerBuiltinTemplates方法注册内置模板
- 实现简单应用模板
- 实现Web应用模板
- 实现桌面应用模板
- 实现服务应用模板
4. 实现模板生成:
- 实现Generate方法生成配置模板
- 根据模板名称选择模板
- 应用用户提供的选项
- 根据格式输出YAML或JSON
5. 实现模板渲染:
- 创建renderTemplate方法渲染模板
- 使用Go模板引擎
- 支持条件渲染
- 支持循环渲染
6. 实现模板验证:
- 创建validateTemplate方法验证生成的模板
- 确保生成的模板符合配置模型
- 提供验证错误信息
- 支持修复常见错误
7. 实现模板自定义:
- 创建customizeTemplate方法自定义模板
- 支持用户提供的变量
- 支持条件包含和排除
- 支持模板组合
8. 实现模板查询:
- 实现GetAvailableTemplates方法获取可用的模板类型
- 提供模板信息和描述
- 支持按类别和标签过滤
- 支持搜索模板
## 单元测试要求
1. 测试模板注册:
- 验证内置模板注册
- 测试模板加载
- 测试模板覆盖
- 测试无效模板处理
2. 测试模板生成:
- 验证Generate方法
- 测试不同的选项组合
- 测试YAML和JSON格式
- 测试错误处理
3. 测试模板渲染:
- 验证renderTemplate方法
- 测试变量替换
- 测试条件渲染
- 测试循环渲染
4. 测试模板验证:
- 验证validateTemplate方法
- 测试有效模板
- 测试无效模板
- 测试错误修复
5. 测试模板自定义:
- 验证customizeTemplate方法
- 测试变量替换
- 测试条件包含和排除
- 测试模板组合
6. 测试模板查询:
- 验证GetAvailableTemplates方法
- 测试模板信息
- 测试过滤功能
- 测试搜索功能
## 依赖关系
- 依赖任务01项目初始化
- 依赖任务02日志系统实现
- 依赖任务03错误处理框架
- 依赖任务04资源管理器实现
- 依赖任务05配置模型定义
- 依赖任务08配置验证器
- 被任务20命令行界面依赖
## 完成标准
1. TemplateGenerator接口已定义并文档完善
2. DefaultTemplateGenerator实现了所有接口方法
3. 内置模板注册功能正常工作
4. 模板生成功能正常工作
5. 模板渲染功能正常工作
6. 模板验证功能正常工作
7. 模板自定义功能正常工作
8. 模板查询功能正常工作
9. 所有单元测试通过
10. 代码符合项目的Go语言开发规范
11. 生成的模板符合配置模型要求
12. 支持所有需求文档中的模板相关功能