Add publish dry-run mode with request logging

This commit is contained in:
CPTProgrammer
2026-07-17 17:00:05 +08:00
parent 9dc7934603
commit 9c7fd31a69
6 changed files with 207 additions and 2 deletions
+11
View File
@@ -138,3 +138,14 @@
- 通过 tRPC subscription 推送进度更新
6. **任一请求失败则取消当前平台的后续所有任务**,不影响另一个平台
7. 全部完成或失败后,弹出结果 Modal 显示最终状态(成功数 / 失败数)
## Dry-run(模拟发布)
`.env.local` 中设置 `PUBLISH_DRY_RUN=1` 后重启开发服务器,发布流程进入模拟模式:
- 配置解析、版本范围计算、文件读取、multipart 请求组装全部照常执行;
- 两个平台的上传请求在 `ModrinthClient.post` / `CurseForgeClient.uploadPost` 内被拦截,**不会发生任何实际上传**;
- 每次拦截会把完整请求摘要(metadata JSON、各文件字段名/大小)打印到终端,并追加写入日志文件供人工核对,路径见终端输出;可用环境变量 `PUBLISH_DRY_RUN_LOG_DIR` 指定日志目录,默认为系统临时目录;
- 平台返回伪造响应以维持调用链类型校验(Modrinth 为 `{ name: "(dry-run)", ... }`CurseForge 为 `{ id: 0 }`),并带 1.5 秒模拟延迟,让前端进度条逐个推进。
实现位置:`src/lib/utils/dryRun.ts`