1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//! CLI subcommand handlers.
//!
//! Why: `main()` was a 2.7k-line file mixing clap argument definitions with
//! subcommand implementations and ~50 helper functions. This module splits
//! each `Commands::*` variant into its own handler plus a set of shared
//! support modules (`daemon_utils`, `format`, `index_resolve`,
//! `reindex_engine`, `doctor_checks`, `doctor_pipeline`) so `main.rs` becomes
//! a thin clap-to-handler dispatcher.
//!
//! What: one module per subcommand, plus a set of shared helper modules.
//! Handlers take the parsed argument fields plus any global flags they need
//! (`index`, `json`). They return `Result<()>` and bubble user-facing errors
//! via `anyhow::bail!` / `Err(...)` — the central `main()` dispatcher prints
//! the friendly red-✗ line and chooses the exit code (issue #104, so
//! handlers are testable without forking a process).
//!
//! Test: `cargo build && cargo test --workspace` — no behaviour change; the
//! refactor is purely structural.
// Shared support modules
pub
// Per-subcommand handlers