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