Expand description
Top-level CLI error type.
CliError is a thin composition enum: it holds a small number of
cross-cutting variants (NotAVolume, VolumeAlreadyExists,
ValidationFailed) directly, plus #[from] conversions for the
per-module error types that are wired in Phase 1: manifest::Error
and distro::Error. Additional module error types (github::Error,
tarball::Error, python::Error) will be composed in as those
modules come online in subsequent units. The volume module returns
Option from find_omne_root rather than Result, so it has no
Error type yet — one will be added in Unit 9 if volume operations
start returning Result.
The variants here are the union of cross-cutting errors the command
layer surfaces to main.rs; module-owned errors live in their own
modules and are wrapped at this layer. Keeping the top-level enum thin
avoids the god-type coupling pattern where one enum depends on every
crate (chrono, ureq, PathBuf, …) through its error imports.
Enums§
- CliError
- Error variant categories map to process exit codes at
main.rs: logical errors (cross-cutting variants and module-wrapper variants) exit with code 1; clap argument-parse errors exit with code 2 via clap’s own machinery. Successful runs exit with code 0.