aboutsummaryrefslogtreecommitdiff
path: root/fondant_deps/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'fondant_deps/src/lib.rs')
-rw-r--r--fondant_deps/src/lib.rs47
1 files changed, 47 insertions, 0 deletions
diff --git a/fondant_deps/src/lib.rs b/fondant_deps/src/lib.rs
new file mode 100644
index 0000000..6f62ce8
--- /dev/null
+++ b/fondant_deps/src/lib.rs
@@ -0,0 +1,47 @@
1pub mod fondant_exports {
2 pub use directories::{ProjectDirs, UserDirs};
3 pub use serde::{de::DeserializeOwned, Serialize};
4 pub use serde_json;
5 pub use serde_yaml;
6 use std::path::{Path, PathBuf};
7 pub use toml;
8 pub fn expand_tilde<P: AsRef<Path>>(path: P) -> PathBuf {
9 let p = path.as_ref();
10 if p.starts_with("~") {
11 if p == Path::new("~") {
12 return UserDirs::new().unwrap().home_dir().to_path_buf();
13 } else {
14 let mut h = UserDirs::new().unwrap().home_dir().to_path_buf();
15 h.push(p.strip_prefix("~/").unwrap());
16 return h;
17 }
18 }
19 return p.to_path_buf();
20 }
21}
22
23use serde::{de::DeserializeOwned, Serialize};
24#[derive(Debug)]
25/// Errors that `load` and `store` can result in
26pub enum FondantError {
27 /// Occurs when the home dir is not accessible.
28 /// You should probably `panic!` when this is thrown.
29 InvalidHomeDir,
30
31 /// Invalid toml/yaml/json config.
32 ConfigParseError,
33
34 /// Invalid permissions to create config dir.
35 /// Might occur when you set config dir to, say, `/etc/config.toml` and run without superuser.
36 DirCreateErr(std::io::Error),
37 LoadError,
38 FileWriteError,
39 FileReadError,
40 FileOpenError,
41}
42
43/// Derive this trait on a struct to mark it as a 'configuration' struct.
44pub trait Configure: Serialize + DeserializeOwned + Default {
45 fn load() -> Result<Self, FondantError>;
46 fn store(&self) -> Result<(), FondantError>;
47}