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
//! `duvis` library surface.
//!
//! The crate is shipped primarily as a CLI binary, but the same logic
//! is also reachable as a library. To keep refactors safe, only the
//! handful of items re-exported here are part of the stable public
//! surface — the internal module layout (`scan/`, `classify/`, `entry/`,
//! `cli/`, `render/`, `wire/`, `filter/`, `ui/`) is an implementation
//! detail and may change between minor versions.
//!
//! Typical library use:
//! ```no_run
//! use duvis::{scan, HardlinkPolicy};
//! let (tree, counts) = scan(std::path::Path::new("."), HardlinkPolicy::CountOnce).unwrap();
//! println!("scanned {} items", counts.scanned());
//! if let Some(children) = tree.children() {
//! for child in children {
//! println!("{}", child.name);
//! }
//! }
//! ```
//!
//! Binary use is just [`run_cli`], which `main.rs` delegates to.
pub use ;
pub use ;
pub use ;
/// Binary entry. `main.rs` calls this and returns the resulting exit
/// code. All CLI / dispatch / exit-code work lives inside the lib crate
/// so that downstream code (and integration tests) can drive the full
/// pipeline without going through a subprocess.