use dirs;
use std::env;
use std::path::PathBuf;
macro_rules! exit_with_message {
($message:expr) => {
use std::process::exit;
eprintln!("{}", $message);
exit(1);
};
}
pub fn get_eups_path_from_env() -> PathBuf {
let env_var = env::var("EUPS_PATH").unwrap_or_else(|e| {
exit_with_message!(format!("Problem loading eups path: {}", e));
});
let eups_path_vec: Vec<&str> = env_var.split(":").collect();
let eups_path_option = eups_path_vec.first();
let mut eups_path = match eups_path_option {
Some(eups_path) => PathBuf::from(eups_path),
None => {
exit_with_message!("Problem loading eups path from env var");
}
};
eups_path.push("ups_db");
if eups_path.is_dir() {
eups_path
} else {
exit_with_message!("Eups path defined in env var does not appear to be a directory");
}
}
pub fn get_user_path_from_home() -> Option<PathBuf> {
let user_home = dirs::home_dir();
let mut user_path = user_home?;
user_path.push(".eups/ups_db");
if user_path.is_dir() {
Some(user_path)
} else {
None
}
}