Skip to main content

Module error

Module error 

Source
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.