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