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;