Skip to main content

rch_common/ui/errors/
mod.rs

1//! Specialized error display components for RCH.
2//!
3//! This module provides error display components specialized for different
4//! error categories. Each component builds on [`super::ErrorPanel`] but adds
5//! domain-specific context extraction and formatting.
6//!
7//! # Components
8//!
9//! - [`NetworkErrorDisplay`]: SSH and network connectivity errors
10//! - [`BuildErrorDisplay`]: Compilation and build errors
11//! - [`ConfigErrorDisplay`]: Configuration file and environment errors
12//!
13//! # Example
14//!
15//! ```ignore
16//! use rch_common::ui::errors::{NetworkErrorDisplay, BuildErrorDisplay, ConfigErrorDisplay};
17//! use rch_common::ui::OutputContext;
18//!
19//! // Network error
20//! let display = NetworkErrorDisplay::ssh_connection_failed("build1.internal")
21//!     .port(22)
22//!     .with_io_error(&io_err)
23//!     .network_path("local", "daemon", "worker")
24//!     .env_var("SSH_AUTH_SOCK", std::env::var("SSH_AUTH_SOCK").ok());
25//!
26//! display.render(OutputContext::detect());
27//!
28//! // Build error
29//! let display = BuildErrorDisplay::build_timeout("cargo build --release")
30//!     .worker("build1")
31//!     .duration_secs(300)
32//!     .timeout_secs(300)
33//!     .cpu_usage(98.0)
34//!     .memory_usage(14.2, 16.0);
35//!
36//! display.render(OutputContext::detect());
37//!
38//! // Config error
39//! let display = ConfigErrorDisplay::parse_error("/home/user/.config/rch/config.toml")
40//!     .line(13)
41//!     .column(15)
42//!     .snippet("timeout = \"thirty\"")
43//!     .expected("integer")
44//!     .actual("string");
45//!
46//! display.render(OutputContext::detect());
47//! ```
48
49pub mod build;
50pub mod config;
51pub mod network;
52
53pub use build::{BuildErrorDisplay, SignalInfo, WorkerResourceState};
54pub use config::{
55    ConfigErrorDisplay, ConfigLocation, ConfigSearchPaths, ConfigSnippet, TypeMismatch,
56};
57pub use network::NetworkErrorDisplay;