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
55
56
57
58
59
//! pathlint library — verifies that commands on PATH resolve from the expected installer.
//!
//! # Public API surface (0.0.15+)
//!
//! The supported library surface is **nine modules**:
//!
//! - [`config`]: TOML schema (Config / Expectation / SourceDef / Relation / Severity / Kind).
//! - [`lint`]: core PATH evaluation (Outcome / Status / Diagnosis / evaluate / exit_code / CheckOutcomeView).
//! - [`trace`]: provenance lookup (TraceOutcome / Found / Provenance / UninstallHint / locate).
//! - [`sort`]: PATH repair proposals (SortPlan / EntryMove / SortNote / sort_path).
//! - [`doctor`]: PATH hygiene (Diagnostic / Kind / Severity / analyze / analyze_real / Filter).
//! - [`catalog`]: built-in source catalog (builtin / merge_with_user / merge_with_user_relations / check_acyclic).
//! - [`source_match`]: path → source matching (find / names_only / validate_sources / Match / SourceWarning).
//! - [`os_detect`]: runtime OS dispatch (Os / os_filter_applies).
//! - [`expand`]: env-var expansion + slash normalisation (expand_env / normalize / expand_and_normalize).
//!
//! `tests/public_api.rs` pins every symbol pathlint promises here.
//! Anything not exported through one of those modules — including
//! the CLI plumbing, presentation layer, registry reader, and
//! orchestration glue — is **internal** and may change between
//! patch releases without notice.
//!
//! Across 0.0.x the library surface is treated as additive-only
//! best-effort; intentional breaks land at `0.0.x → 0.0.(x+1)`
//! boundaries (Cargo's MAJOR-equivalent for `0.0.y`) and are
//! flagged in release notes.
// Internal modules. Two visibility tiers:
//
// * `pub(crate)` for everything that only needs to be reachable
// inside the lib crate itself (formatter, presentation, embed
// reader, init template). These do not appear on docs.rs and
// do not figure in the library contract.
// * `#[doc(hidden)] pub` for `cli` and `run`, which are reached
// from `src/main.rs`. Cargo treats `src/main.rs` as a separate
// crate that depends on `pathlint`, so `pub(crate)` would hide
// them from the binary. They remain hidden from docs.rs and
// are explicitly NOT part of the supported library surface.
pub
pub
pub
pub
pub
pub