diff options
-rw-r--r-- | fondant_deps/src/lib.rs | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/fondant_deps/src/lib.rs b/fondant_deps/src/lib.rs index 82626b7..024207e 100644 --- a/fondant_deps/src/lib.rs +++ b/fondant_deps/src/lib.rs | |||
@@ -21,7 +21,9 @@ pub mod fondant_exports { | |||
21 | } | 21 | } |
22 | 22 | ||
23 | use serde::{de::DeserializeOwned, Serialize}; | 23 | use serde::{de::DeserializeOwned, Serialize}; |
24 | use std::path::{Path, PathBuf}; | 24 | use std::error::Error; |
25 | use std::fmt; | ||
26 | use std::path::Path; | ||
25 | 27 | ||
26 | #[derive(Debug)] | 28 | #[derive(Debug)] |
27 | /// Errors that `load` and `store` can result in | 29 | /// Errors that `load` and `store` can result in |
@@ -42,6 +44,32 @@ pub enum FondantError { | |||
42 | FileOpenError, | 44 | FileOpenError, |
43 | } | 45 | } |
44 | 46 | ||
47 | impl fmt::Display for FondantError { | ||
48 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||
49 | let suggestion_text = | ||
50 | "HELP: You might have insufficient permissions to perform this action."; | ||
51 | match self { | ||
52 | FondantError::InvalidHomeDir => write!(f, "Failed to find home directory!"), | ||
53 | FondantError::ConfigParseError => write!(f, "Invalid configuration file!"), | ||
54 | FondantError::DirCreateErr(_) => { | ||
55 | write!(f, "Failed to write to configuration directory!") | ||
56 | } | ||
57 | FondantError::LoadError => write!(f, "Failed to load configuration file!"), | ||
58 | FondantError::FileWriteError => { | ||
59 | write!(f, "Failed to write configuration file! {}", suggestion_text) | ||
60 | } | ||
61 | FondantError::FileReadError => { | ||
62 | write!(f, "Failed to read configuration file! {}", suggestion_text) | ||
63 | } | ||
64 | FondantError::FileOpenError => { | ||
65 | write!(f, "Failed to open configuration file! {}", suggestion_text) | ||
66 | } | ||
67 | } | ||
68 | } | ||
69 | } | ||
70 | |||
71 | impl Error for FondantError {} | ||
72 | |||
45 | /// Derive this trait on a struct to mark it as a 'configuration' struct. | 73 | /// Derive this trait on a struct to mark it as a 'configuration' struct. |
46 | pub trait Configure: Serialize + DeserializeOwned + Default { | 74 | pub trait Configure: Serialize + DeserializeOwned + Default { |
47 | fn load_file<P: AsRef<Path>>(config_file: P) -> Result<Self, FondantError>; | 75 | fn load_file<P: AsRef<Path>>(config_file: P) -> Result<Self, FondantError>; |