diff options
Diffstat (limited to 'src/config.rs')
-rw-r--r-- | src/config.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..08fa002 --- /dev/null +++ b/src/config.rs @@ -0,0 +1,25 @@ +use crate::prelude::*; + +#[derive(serde::Deserialize, Default, Debug)] +pub struct Config { + aliases: + std::collections::HashMap<std::path::PathBuf, crate::parse::ast::Exe>, +} + +impl Config { + pub fn load() -> Result<Self> { + let file = crate::dirs::config_file(); + if std::fs::metadata(&file).is_ok() { + Ok(toml::from_slice(&std::fs::read(&file)?)?) + } else { + Ok(Self::default()) + } + } + + pub fn alias_for( + &self, + path: &std::path::Path, + ) -> Option<&crate::parse::ast::Exe> { + self.aliases.get(path) + } +} |