3.8 KiB
3.8 KiB
任务04:资源管理器实现
任务描述
实现Installer Builder项目的资源管理器,负责处理文件和目录操作、临时文件管理、资源复制等功能。资源管理器将为构建过程提供统一的资源处理接口,确保资源操作的安全性和一致性。
实现步骤
-
定义资源管理器接口:
- 在
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 }
- 在
-
实现默认资源管理器:
- 创建DefaultResourceManager结构体,实现ResourceManager接口:
type DefaultResourceManager struct { logger Logger tempDirs []string tempFiles []string cleanupOnExit bool mu sync.Mutex } - 实现所有接口方法
- 创建DefaultResourceManager结构体,实现ResourceManager接口:
-
实现临时文件和目录管理:
- 使用
ioutil.TempDir和ioutil.TempFile创建临时资源 - 跟踪创建的临时资源,以便后续清理
- 实现安全的清理机制
- 使用
-
实现文件和目录操作:
- 实现文件复制功能,保留文件权限
- 实现目录复制功能,支持递归复制
- 实现目录创建和检查功能
-
实现文件内容操作:
- 实现文件读取功能
- 实现文件写入功能,支持设置权限
- 实现文件追加功能
-
实现路径操作:
- 实现绝对路径转换
- 实现相对路径转换
- 实现路径连接,考虑不同平台的路径分隔符
-
实现资源清理:
- 实现Cleanup方法,清理所有临时资源
- 添加退出钩子,确保程序退出时清理资源
- 实现线程安全的清理机制
单元测试要求
-
测试临时文件和目录管理:
- 验证临时资源创建
- 测试临时资源清理
- 测试并发创建和清理
-
测试文件和目录操作:
- 验证文件复制功能
- 测试目录复制功能
- 测试权限保留
-
测试文件内容操作:
- 验证文件读写功能
- 测试文件追加功能
- 测试大文件处理
-
测试路径操作:
- 验证路径转换功能
- 测试跨平台路径处理
-
测试资源清理:
- 验证Cleanup方法
- 测试退出钩子
- 测试异常情况下的资源清理
依赖关系
- 依赖任务01(项目初始化)
- 依赖任务02(日志系统实现)
- 依赖任务03(错误处理框架)
- 被任务05(配置模型定义)及后续任务依赖
完成标准
- ResourceManager接口已定义并文档完善
- DefaultResourceManager实现了所有接口方法
- 临时资源管理功能正常工作
- 文件和目录操作功能正常工作
- 文件内容操作功能正常工作
- 路径操作功能正常工作
- 资源清理功能正常工作
- 所有单元测试通过
- 代码符合项目的Go语言开发规范
- 资源操作安全且高效