installerbuilder/tasks/task16-文件集合处理器.md

159 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 任务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平台适配接口定义
- 依赖任务10Windows平台适配器和任务11Linux平台适配器
- 被任务12MSI包构建器、任务13DEB包构建器、任务14RPM包构建器和任务15ZIP包构建器依赖
## 完成标准
1. FileCollectionProcessor接口已定义并文档完善
2. DefaultFileCollectionProcessor实现了所有接口方法
3. 文件集合处理功能正常工作
4. 文件复制功能正常工作
5. 文件过滤功能正常工作
6. 文件转换功能正常工作
7. 权限和属性设置功能正常工作
8. 错误处理和报告功能正常工作
9. 所有单元测试通过
10. 代码符合项目的Go语言开发规范
11. 处理器能够处理各种文件集合场景
12. 支持所有需求文档中的文件处理相关功能