1use std::fmt::{Debug, Display};
2
3pub use app_dirs::AppDirsError;
4pub use glob::{GlobError, GlobResult};
5pub use serde_json::{Error as JsonError, Result as JsonResult};
6pub use std::io::{Error as IoError, Result as IoResult};
7
8pub enum CtError {
9 IoError(IoError),
10 JsonError(JsonError),
11 ADError(AppDirsError),
12 GlobError(GlobError),
13 Own(&'static str),
14}
15
16impl From<IoError> for CtError {
17 fn from(e: IoError) -> Self {
18 CtError::IoError(e)
19 }
20}
21
22impl From<JsonError> for CtError {
23 fn from(e: JsonError) -> Self {
24 CtError::JsonError(e)
25 }
26}
27
28impl From<AppDirsError> for CtError {
29 fn from(e: AppDirsError) -> Self {
30 CtError::ADError(e)
31 }
32}
33
34impl From<GlobError> for CtError {
35 fn from(e: GlobError) -> Self {
36 CtError::GlobError(e)
37 }
38}
39
40impl From<&'static str> for CtError {
41 fn from(msg: &'static str) -> Self {
42 CtError::Own(msg)
43 }
44}
45
46impl Debug for CtError {
47 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
48 match self {
49 CtError::IoError(e) => write!(f, "IO Error: {}", e),
50 CtError::JsonError(e) => write!(f, "JSON Error: {}", e),
51 CtError::ADError(e) => write!(f, "Ad Error: {}", e),
52 CtError::GlobError(e) => write!(f, "Glob Error: {}", e),
53 CtError::Own(s) => write!(f, "CT Error: {}", s),
54 }
55 }
56}
57
58impl Display for CtError {
59 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
60 match self {
61 CtError::IoError(e) => write!(f, "IO Error: {}", e),
62 CtError::JsonError(e) => write!(f, "JSON Error: {}", e),
63 CtError::ADError(e) => write!(f, "Ad Error: {}", e),
64 CtError::GlobError(e) => write!(f, "Glob Error: {}", e),
65 CtError::Own(s) => write!(f, "CT Error: {}", s),
66 }
67 }
68}
69
70pub type CtResult<T> = Result<T, CtError>;
71pub type ADResult<T> = Result<T, app_dirs::AppDirsError>;