Skip to main content

claude_code_statusline_core/
error.rs

1//! Core error types
2use thiserror::Error;
3
4#[derive(Debug, Error)]
5pub enum CoreError {
6    // Generic/flow errors
7    #[error("unknown module: {0}")]
8    UnknownModule(String),
9    #[error("missing module config: {0}")]
10    MissingConfig(String),
11    #[error("module timed out: {0}")]
12    ModuleTimeout(String),
13
14    // Config and parsing
15    #[error("invalid JSON input: {0}")]
16    InvalidJson(#[from] serde_json::Error),
17    #[error("invalid TOML: {0}")]
18    InvalidToml(#[from] toml::de::Error),
19
20    // IO
21    #[error("io error: {0}")]
22    Io(#[from] std::io::Error),
23    #[error("failed to read config at {path}: {source}")]
24    ConfigRead {
25        path: String,
26        source: std::io::Error,
27    },
28    #[error("invalid TOML at {path}: {source}")]
29    ConfigParse {
30        path: String,
31        source: toml::de::Error,
32    },
33
34    // Timeout helpers
35    #[error("task panicked")]
36    TaskPanic,
37    #[error("worker disconnected")]
38    WorkerDisconnected,
39
40    // Validation
41    #[error("invalid config: {0}")]
42    InvalidConfig(String),
43
44    // Optional git errors
45    #[cfg(feature = "git")]
46    #[error(transparent)]
47    Git(#[from] git2::Error),
48}