用 clap_complete 4 给 cph 生成 shell 补全脚本(bash/zsh/fish/powershell/elvish)。 clap ValueEnum 枚举 Shell;run_completions 从 Cli::command() 派生,自动跟随 子命令/flag 演进。用法:`cph completions zsh > ~/.zfunc/_cph`。 - 依赖经 `cargo add clap_complete@4 -p cph-cli` 添加(4.6.5,默认 features 无额外依赖) - README 补补全安装一节 测试:全 workspace 49 passed。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
crates/
These crates implement the rule-based lesson checker that aligns to the
semantic master in spec/: it reads an engineering-file (one lesson, ADR-0005)
laid out per ADR-0008 (declarative manifest.toml + per-element
element.toml), validates structure and content, and emits diagnostics.
cph-diag (the shared diagnostic vocabulary), cph-model (the ADR-0008 loader),
and cph-typst (the typst World / compile / span-mapping layer) are
deliberately reusable by future components such as an exporter, which is why
they live in this repo-wide crates/ directory rather than under any single
component; cph-schema (kind JSON Schemas + validation), cph-check
(orchestration + render-coverage) and cph-cli (the cph command-line
entrypoint) are the checker proper.
Crate map
| crate | owner | role |
|---|---|---|
cph-diag |
WU-1 | shared diagnostic vocabulary (Severity, DiagCode, Diagnostic, SourceSpan) — reusable |
cph-model |
WU-1 | parses the ADR-0008 layout into an in-memory ordered Lesson — reusable |
cph-schema |
WU-3 | the 4 stdlib kind JSON Schemas + structural validation |
cph-typst |
WU-4 | typst World, driver generation, compile, PDF, span mapping — reusable |
cph-check |
WU-5 | orchestration: render-coverage and the full check pipeline |
cph-cli |
WU-5 | the cph command-line entrypoint |
Build
# from the repository root (the cargo workspace root)
cargo build # all crates
cargo test # cph-diag + cph-model unit/integration tests
cargo clippy --all-targets -- -D warnings
cargo fmt --check