
huwenjiao.hwjandClaude Opus 5
f06a24ec2e
fix(sheet): write export CSV atomically and reject cross-format flags
CSV 落盘从 os.WriteFile 改为仓库已有的 AtomicWrite:os.WriteFile 会先把
已存在的目标文件截断,写入中途失败(磁盘满、配额、I/O 错误)就把用户的原
文件毁掉了。改为写同目录临时文件再 rename,失败时原文件保持不变、临时文件
被清理。父目录仍先 stat 一次,保持与 xlsx 分支一致的「父目录不存在即报错」
语义,不让 AtomicWrite 的 MkdirAll 把拼错的路径悄悄建成目录。
格式分派后拒绝不属于当前分支的显式参数:--sheet-id / --range /
--value-render-option / --allow-truncated 只有 csv 分支消费,此前落到默认的
xlsx 分支会被静默忽略。自动化漏写 --export-format csv 时,用户要的 --range
被丢掉、导出的却是整篇工作簿,命令仍报成功。现在按 Flags().Changed 检测并
在提交导出任务之前报错,同时列出所有误用的参数。反向不需要检查:xlsx 分支
没有专属参数,node / output / export-format 两条分支共用。
测试覆盖 rename 失败后原文件完好且目录无临时文件残留、四个 csv 专属 flag 在
默认与显式 xlsx 下各自被拒且零远程调用、多个参数同时误用时全部列出、csv 分支
照常接受它们;另加一条登记表与实际绑定 flag 的一致性测试,防止新增 flag 漏登记
(漏登记会重新引入静默忽略,误登记共享 flag 会拒掉合法的 xlsx 调用)。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 18:26:40 +08:00
..
2026-07-16 10:58:56 +08:00
2026-08-07 20:25:21 +08:00
2026-07-16 10:58:56 +08:00
2026-08-05 11:24:58 +08:00
2026-08-07 21:05:47 +08:00
2026-07-11 10:28:10 +08:00
2026-08-05 15:59:17 +08:00
2026-08-04 14:24:49 +08:00
2026-08-03 20:00:47 +08:00
2026-08-03 23:30:54 +08:00
2026-08-06 17:53:57 +08:00
2026-08-08 18:26:40 +08:00
2026-08-05 20:26:41 +08:00
2026-07-16 10:26:19 +08:00
2026-07-16 10:58:56 +08:00
2026-07-23 13:31:23 +08:00
2026-08-06 12:26:50 +08:00
2026-07-17 10:47:24 +08:00
2026-08-03 20:00:47 +08:00
2026-08-03 12:10:54 +08:00
2026-08-06 17:53:57 +08:00
2026-07-21 11:33:03 +08:00
2026-08-05 09:35:57 +08:00
2026-07-16 10:58:56 +08:00
2026-07-16 10:58:56 +08:00
2026-07-16 11:56:44 +08:00
2026-08-07 19:27:49 +08:00
2026-07-17 14:41:05 +08:00
2026-08-03 20:00:47 +08:00
2026-08-06 12:22:04 +08:00
2026-07-16 10:58:56 +08:00
2026-07-16 10:58:56 +08:00