diff options
Diffstat (limited to 'src/basedir.rs')
| -rw-r--r-- | src/basedir.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/basedir.rs b/src/basedir.rs new file mode 100644 index 0000000..e5bcff7 --- /dev/null +++ b/src/basedir.rs @@ -0,0 +1,31 @@ +use std::{env, path::PathBuf}; + +const NAME: &str = env!("CARGO_PKG_NAME"); + +pub fn home() -> PathBuf { + if let Ok(home) = env::var("HOME") { + PathBuf::from(home) + } else { + PathBuf::new() + } +} + +fn alt_dir() -> PathBuf { + PathBuf::from(format!("{}/.{}", home().to_string_lossy(), NAME)) +} + +pub fn data_dir() -> PathBuf { + if let Ok(base) = env::var("XDG_DATA_HOME") { + PathBuf::from(base).join(NAME) + } else { + alt_dir() + } +} + +pub fn config_dir() -> PathBuf { + if let Ok(base) = env::var("XDG_CONFIG_HOME") { + PathBuf::from(base).join(NAME) + } else { + alt_dir() + } +} |
