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

5.2 KiB
Raw Blame History

任务21配置模板生成器

任务描述

实现配置模板生成器用于生成安装包构建的配置文件模板。配置模板生成器将帮助用户快速创建符合要求的配置文件包括YAML和JSON格式并提供不同类型应用程序的模板选项。

实现步骤

  1. 定义模板生成器接口:

    • 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 // 模板标签
      }
      
  2. 创建默认模板生成器:

    • 创建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
      }
      
  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. 支持所有需求文档中的模板相关功能