installerbuilder/tasks/task04-资源管理器实现.md

3.8 KiB
Raw Permalink Blame History

任务04资源管理器实现

任务描述

实现Installer Builder项目的资源管理器负责处理文件和目录操作、临时文件管理、资源复制等功能。资源管理器将为构建过程提供统一的资源处理接口确保资源操作的安全性和一致性。

实现步骤

  1. 定义资源管理器接口:

    • internal/common/resource包中创建manager.go文件
    • 定义ResourceManager接口
      type ResourceManager interface {
          // 临时文件和目录管理
          CreateTempDir(prefix string) (string, error)
          CreateTempFile(prefix string, suffix string) (string, error)
          CleanupTempDir(path string) error
          CleanupTempFile(path string) error
      
          // 文件和目录操作
          CopyFile(src, dst string) error
          CopyDir(src, dst string, recursive bool) error
          EnsureDirExists(path string, perm os.FileMode) error
          FileExists(path string) (bool, error)
          DirExists(path string) (bool, error)
      
          // 文件内容操作
          ReadFile(path string) ([]byte, error)
          WriteFile(path string, data []byte, perm os.FileMode) error
          AppendToFile(path string, data []byte) error
      
          // 路径操作
          AbsPath(path string) (string, error)
          RelPath(path, basePath string) (string, error)
          JoinPath(elem ...string) string
      
          // 清理操作
          Cleanup() error
      }
      
  2. 实现默认资源管理器:

    • 创建DefaultResourceManager结构体实现ResourceManager接口
      type DefaultResourceManager struct {
          logger        Logger
          tempDirs      []string
          tempFiles     []string
          cleanupOnExit bool
          mu            sync.Mutex
      }
      
    • 实现所有接口方法
  3. 实现临时文件和目录管理:

    • 使用ioutil.TempDirioutil.TempFile创建临时资源
    • 跟踪创建的临时资源,以便后续清理
    • 实现安全的清理机制
  4. 实现文件和目录操作:

    • 实现文件复制功能,保留文件权限
    • 实现目录复制功能,支持递归复制
    • 实现目录创建和检查功能
  5. 实现文件内容操作:

    • 实现文件读取功能
    • 实现文件写入功能,支持设置权限
    • 实现文件追加功能
  6. 实现路径操作:

    • 实现绝对路径转换
    • 实现相对路径转换
    • 实现路径连接,考虑不同平台的路径分隔符
  7. 实现资源清理:

    • 实现Cleanup方法清理所有临时资源
    • 添加退出钩子,确保程序退出时清理资源
    • 实现线程安全的清理机制

单元测试要求

  1. 测试临时文件和目录管理:

    • 验证临时资源创建
    • 测试临时资源清理
    • 测试并发创建和清理
  2. 测试文件和目录操作:

    • 验证文件复制功能
    • 测试目录复制功能
    • 测试权限保留
  3. 测试文件内容操作:

    • 验证文件读写功能
    • 测试文件追加功能
    • 测试大文件处理
  4. 测试路径操作:

    • 验证路径转换功能
    • 测试跨平台路径处理
  5. 测试资源清理:

    • 验证Cleanup方法
    • 测试退出钩子
    • 测试异常情况下的资源清理

依赖关系

  • 依赖任务01项目初始化
  • 依赖任务02日志系统实现
  • 依赖任务03错误处理框架
  • 被任务05配置模型定义及后续任务依赖

完成标准

  1. ResourceManager接口已定义并文档完善
  2. DefaultResourceManager实现了所有接口方法
  3. 临时资源管理功能正常工作
  4. 文件和目录操作功能正常工作
  5. 文件内容操作功能正常工作
  6. 路径操作功能正常工作
  7. 资源清理功能正常工作
  8. 所有单元测试通过
  9. 代码符合项目的Go语言开发规范
  10. 资源操作安全且高效