|
| 1 | +# design: pwsh shared helper extraction round 2 |
| 2 | + |
| 3 | +## Scope |
| 4 | + |
| 5 | +本轮处理上一轮建议顺序的第 2-5 项: |
| 6 | + |
| 7 | +1. rclone 配置 helper 迁移。 |
| 8 | +2. Docker Compose helper 抽取。 |
| 9 | +3. JSON/manifest/原子写入工具。 |
| 10 | +4. 文件同步/备份 helper。 |
| 11 | + |
| 12 | +`Install-GitHubCli.ps1` 明确不改。 |
| 13 | + |
| 14 | +## Config Helpers |
| 15 | + |
| 16 | +`psutils/modules/config.psm1` 已提供 `ConvertTo-ConfigHashtable`、`Get-ConfigValue`、`Resolve-ConfigEnvPlaceholder` 与 `Resolve-ConfigSources`。`rclone-ops.ps1` 保留旧领域函数名作为兼容 wrapper,但内部委托共享 helper。 |
| 17 | + |
| 18 | +## Docker Compose Helpers |
| 19 | + |
| 20 | +新增 `psutils/modules/docker.psm1`,只提供 Docker Compose 基础设施: |
| 21 | + |
| 22 | +* `Test-DockerComposeAvailable` |
| 23 | +* `Assert-DockerComposeReady` |
| 24 | +* `Get-DockerComposeBaseArgs` |
| 25 | +* `Invoke-DockerComposeCommand` |
| 26 | + |
| 27 | +调用脚本可保留本地 `Invoke-DockerCompose` 等旧函数名作为 wrapper,避免破坏测试和用户脚本习惯。 |
| 28 | + |
| 29 | +## JSON Helpers |
| 30 | + |
| 31 | +新增 `psutils/modules/json.psm1`,提供: |
| 32 | + |
| 33 | +* `Read-JsonHashtableFile` |
| 34 | +* `Write-JsonFileAtomic` |
| 35 | +* `Get-StableJsonKey` |
| 36 | + |
| 37 | +这些 helper 只负责 JSON 读写与稳定键,不处理 Claude settings 合并、安全校验或 HuJSON 兼容。 |
| 38 | + |
| 39 | +## File Helpers |
| 40 | + |
| 41 | +在 `psutils/modules/filesystem.psm1` 中补充: |
| 42 | + |
| 43 | +* `Copy-FileSystemItemSafe` |
| 44 | +* `New-BackupSnapshot` |
| 45 | + |
| 46 | +它们只处理文件系统复制/备份基础设施。Claude managed manifest 的 stale cleanup 仍保留在 `Sync-ClaudeConfig.ps1`。 |
| 47 | + |
| 48 | +## Compatibility |
| 49 | + |
| 50 | +* 保留 rclone 与 Claude 同步脚本的对外函数名和命令行入口。 |
| 51 | +* 保留测试依赖的关键错误文本。 |
| 52 | +* Docker Compose 先迁移测试覆盖较好的调用点,避免一轮改完所有 start 脚本。 |
| 53 | + |
| 54 | +## Validation |
| 55 | + |
| 56 | +* `psutils/tests/config.Tests.ps1` |
| 57 | +* `psutils/tests/filesystem.Tests.ps1` |
| 58 | +* `psutils/tests/json.Tests.ps1` |
| 59 | +* `psutils/tests/docker.Tests.ps1` |
| 60 | +* `tests/RcloneOps.Tests.ps1` |
| 61 | +* `tests/Sync-ClaudeConfig.Tests.ps1` |
| 62 | +* 迁移的 Docker Compose start 脚本对应测试 |
| 63 | +* `pnpm qa` |
| 64 | +* `pnpm test:pwsh:all` |
0 commit comments