# 任务16:文件集合处理器 ## 任务描述 实现文件集合处理器,用于处理配置中定义的文件集合,包括文件复制、权限设置、过滤、转换等功能。文件集合处理器将确保应用程序的文件能够正确地包含在安装包中,并具有适当的权限和属性。 ## 实现步骤 1. 定义文件集合处理器接口: - 在`internal/builder/files`包中创建`processor.go`文件 - 定义FileCollectionProcessor接口: ```go type FileCollectionProcessor interface { // Process 处理文件集合 Process(config *config.Config, target config.Target, outputDir string) error // GetProcessedFiles 获取处理后的文件列表 GetProcessedFiles() []ProcessedFile // GetErrors 获取处理过程中的错误 GetErrors() []error } ``` - 定义ProcessedFile结构体: ```go type ProcessedFile struct { SourcePath string // 源文件路径 DestinationPath string // 目标文件路径 Permissions string // 文件权限 Owner string // 文件所有者 Group string // 文件组 Attributes map[string]string // 文件属性 IsDirectory bool // 是否为目录 IsSymlink bool // 是否为符号链接 SymlinkTarget string // 符号链接目标 } ``` 2. 创建默认文件集合处理器: - 创建`default_processor.go`文件 - 定义DefaultFileCollectionProcessor结构体,实现FileCollectionProcessor接口: ```go type DefaultFileCollectionProcessor struct { platformAdapter platform.PlatformAdapter resourceMgr resource.ResourceManager logger log.Logger processedFiles []ProcessedFile errors []error } ``` - 实现构造函数: ```go func NewDefaultFileCollectionProcessor(platformAdapter platform.PlatformAdapter, resourceMgr resource.ResourceManager, logger log.Logger) *DefaultFileCollectionProcessor { return &DefaultFileCollectionProcessor{ platformAdapter: platformAdapter, resourceMgr: resourceMgr, logger: logger, processedFiles: make([]ProcessedFile, 0), errors: make([]error, 0), } } ``` 3. 实现文件集合处理: - 实现Process方法,处理文件集合 - 遍历配置中的文件集合 - 处理每个文件集合的源和目标 - 应用包含和排除规则 - 处理文件权限和属性 4. 实现文件复制功能: - 创建copyFiles方法,复制文件到目标目录 - 处理文件和目录的复制 - 保留文件元数据 - 处理符号链接 5. 实现文件过滤功能: - 创建filterFiles方法,根据规则过滤文件 - 支持glob模式匹配 - 支持正则表达式匹配 - 处理包含和排除规则的优先级 6. 实现文件转换功能: - 创建transformFiles方法,转换文件内容 - 支持变量替换 - 支持模板处理 - 支持自定义转换器 7. 实现权限和属性设置: - 创建setPermissionsAndAttributes方法,设置文件权限和属性 - 处理不同平台的权限模型 - 设置文件所有者和组 - 设置文件属性(如只读、隐藏等) 8. 实现错误处理和报告: - 收集处理过程中的错误 - 提供详细的错误信息 - 支持错误级别和严重性 ## 单元测试要求 1. 测试文件集合处理: - 验证Process方法 - 测试文件集合遍历 - 测试源和目标处理 - 测试包含和排除规则 2. 测试文件复制功能: - 验证文件复制 - 测试目录复制 - 测试元数据保留 - 测试符号链接处理 3. 测试文件过滤功能: - 验证glob模式匹配 - 测试正则表达式匹配 - 测试包含和排除规则 - 测试规则优先级 4. 测试文件转换功能: - 验证变量替换 - 测试模板处理 - 测试自定义转换器 5. 测试权限和属性设置: - 验证权限设置 - 测试所有者和组设置 - 测试文件属性设置 - 测试不同平台的处理 6. 测试错误处理和报告: - 验证错误收集 - 测试错误信息详细程度 - 测试错误级别和严重性 ## 依赖关系 - 依赖任务01(项目初始化) - 依赖任务02(日志系统实现) - 依赖任务03(错误处理框架) - 依赖任务04(资源管理器实现) - 依赖任务05(配置模型定义) - 依赖任务09(平台适配接口定义) - 依赖任务10(Windows平台适配器)和任务11(Linux平台适配器) - 被任务12(MSI包构建器)、任务13(DEB包构建器)、任务14(RPM包构建器)和任务15(ZIP包构建器)依赖 ## 完成标准 1. FileCollectionProcessor接口已定义并文档完善 2. DefaultFileCollectionProcessor实现了所有接口方法 3. 文件集合处理功能正常工作 4. 文件复制功能正常工作 5. 文件过滤功能正常工作 6. 文件转换功能正常工作 7. 权限和属性设置功能正常工作 8. 错误处理和报告功能正常工作 9. 所有单元测试通过 10. 代码符合项目的Go语言开发规范 11. 处理器能够处理各种文件集合场景 12. 支持所有需求文档中的文件处理相关功能