sps_common/
error.rs

1use std::sync::Arc;
2
3use thiserror::Error;
4
5#[derive(Error, Debug, Clone)]
6pub enum SpsError {
7    #[error("I/O Error: {0}")]
8    Io(#[from] Arc<std::io::Error>),
9
10    #[error("HTTP Request Error: {0}")]
11    Http(#[from] Arc<reqwest::Error>),
12
13    #[error("JSON Parsing Error: {0}")]
14    Json(#[from] Arc<serde_json::Error>),
15
16    #[error("Semantic Versioning Error: {0}")]
17    SemVer(#[from] Arc<semver::Error>),
18
19    #[error("Object File Error: {0}")]
20    Object(#[from] Arc<object::read::Error>),
21
22    #[error("Configuration Error: {0}")]
23    Config(String),
24
25    #[error("API Error: {0}")]
26    Api(String),
27
28    #[error("API Request Error: {0}")]
29    ApiRequestError(String),
30
31    #[error("DownloadError: Failed to download '{0}' from '{1}': {2}")]
32    DownloadError(String, String, String),
33
34    #[error("Cache Error: {0}")]
35    Cache(String),
36
37    #[error("Resource Not Found: {0}")]
38    NotFound(String),
39
40    #[error("Installation Error: {0}")]
41    InstallError(String),
42
43    #[error("Generic Error: {0}")]
44    Generic(String),
45
46    #[error("HttpError: {0}")]
47    HttpError(String),
48
49    #[error("Checksum Mismatch: {0}")]
50    ChecksumMismatch(String),
51
52    #[error("Validation Error: {0}")]
53    ValidationError(String),
54
55    #[error("Checksum Error: {0}")]
56    ChecksumError(String),
57
58    #[error("Parsing Error in {0}: {1}")]
59    ParseError(&'static str, String),
60
61    #[error("Version error: {0}")]
62    VersionError(String),
63
64    #[error("Dependency Error: {0}")]
65    DependencyError(String),
66
67    #[error("Build environment setup failed: {0}")]
68    BuildEnvError(String),
69
70    #[error("IoError: {0}")]
71    IoError(String),
72
73    #[error("Failed to execute command: {0}")]
74    CommandExecError(String),
75
76    #[error("Mach-O Error: {0}")]
77    MachOError(String),
78
79    #[error("Mach-O Modification Error: {0}")]
80    MachOModificationError(String),
81
82    #[error("Mach-O Relocation Error: Path too long - {0}")]
83    PathTooLongError(String),
84
85    #[error("Codesign Error: {0}")]
86    CodesignError(String),
87}
88
89impl From<std::io::Error> for SpsError {
90    fn from(err: std::io::Error) -> Self {
91        SpsError::Io(Arc::new(err))
92    }
93}
94
95impl From<reqwest::Error> for SpsError {
96    fn from(err: reqwest::Error) -> Self {
97        SpsError::Http(Arc::new(err))
98    }
99}
100
101impl From<serde_json::Error> for SpsError {
102    fn from(err: serde_json::Error) -> Self {
103        SpsError::Json(Arc::new(err))
104    }
105}
106
107impl From<semver::Error> for SpsError {
108    fn from(err: semver::Error) -> Self {
109        SpsError::SemVer(Arc::new(err))
110    }
111}
112
113impl From<object::read::Error> for SpsError {
114    fn from(err: object::read::Error) -> Self {
115        SpsError::Object(Arc::new(err))
116    }
117}
118
119pub type Result<T> = std::result::Result<T, SpsError>;