# 任务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. 支持所有需求文档中的模板相关功能