Files
MediaOrganizer/docs/adr/0001-update-cache-arity-and-mode-contract.md
Shuery c1ed1795c2
CI / lint + test + build (push) Canceled after 0s
docs: 重写 README、新增项目报告与开发工具配置
- README 现代化重写:徽章区、特性一览、统一 GitHub 提示块格式、修正版本号与 AI 默认值
- 新增 docs/PROJECT_REPORT.md 学术项目报告(含许可证合规分析与死链修复记录)
- 收录 23 份 ADR 架构决策记录与 CONTEXT.md 领域术语表
- 新增开发配置:.editorconfig / .shellcheckrc / .markdownlint-cli2.jsonc
- .gitignore 补充 mo_map/、检查报告、编辑器临时文件
- 新增 config.example.json 配置模板(不含真实密钥)
2026-08-14 22:41:40 +08:00

1.3 KiB
Raw Permalink Blame History

update-cache 的 arity 语义与入口模式契约

原 --update-cache 是独立模式:扫源目录强制重取全部唯一查询后立即退出,从不整理文件;而预期语义是"整理媒体文件时更新对应的缓存"。决定:--update-cache 降为修饰标志,行为形状由目录个数推导——只给 1 个目录(位置参数或 --src-dir)=仅刷缓存后退出(保留原 update_cache() 行为);给 2 个目录=整理流水线内对处理的条目强制重取、不提前退出。

模式契约同步收紧:list / organize / cache-only 三种形状一次调用只取其一,冲突(如 --update-cache --list-cache)硬报错并附 usage,废弃原先"看似生效实则静默忽略"的分发顺序。用法错误(未知选项、参数个数、模式冲突)统一 exit 2(GNU 惯例),运行期错误保持 exit 1。目录只能走一个通道:2 个位置参数或 --src-dir + --dest-dir,不可混用;每种形状声明所需目录数:organize=2、cache-only=1、list=0,多传少传均报错。

Considered Options: 保持独立标志 + main() 内隐式优先级(原状)——冲突静默,用户无法感知标志未生效。混合通道——无真实用例,徒增解析复杂度。