Skip to main content

hyperi_rustlib/cli/
error.rs

1// Project:   hyperi-rustlib
2// File:      src/cli/error.rs
3// Purpose:   CLI error types
4// Language:  Rust
5//
6// License:   FSL-1.1-ALv2
7// Copyright: (c) 2026 HYPERI PTY LIMITED
8
9//! Error types for the CLI module.
10
11use thiserror::Error;
12
13/// Errors from CLI operations.
14#[derive(Debug, Error)]
15pub enum CliError {
16    /// Configuration loading failed.
17    #[error("config error: {0}")]
18    Config(String),
19
20    /// Logger initialisation failed.
21    #[error("logger error: {0}")]
22    Logger(String),
23
24    /// Metrics server failed.
25    #[error("metrics error: {0}")]
26    Metrics(String),
27
28    /// Service runtime error.
29    #[error("service error: {0}")]
30    Service(String),
31
32    /// Invalid CLI argument.
33    #[error("invalid argument: {0}")]
34    InvalidArgument(String),
35
36    /// I/O error.
37    #[error("I/O error: {0}")]
38    Io(#[from] std::io::Error),
39}
40
41#[cfg(feature = "logger")]
42impl From<crate::logger::LoggerError> for CliError {
43    fn from(e: crate::logger::LoggerError) -> Self {
44        Self::Logger(e.to_string())
45    }
46}
47
48#[cfg(feature = "config")]
49impl From<crate::config::ConfigError> for CliError {
50    fn from(e: crate::config::ConfigError) -> Self {
51        Self::Config(e.to_string())
52    }
53}