use env_path::*;
use error::*;
use std::ffi::OsString;
use std::env;
use std::path::PathBuf;
pub fn get_data_home_from_env<'a, F>(get_env_var: &'a F) -> Result<PathBuf>
where F: Fn(&'a str) -> Option<OsString>
{
get_path_or_default(get_env_var, "XDG_DATA_HOME", ".local/share")
}
pub fn get_data_home() -> Result<PathBuf> {
get_data_home_from_env(&env::var_os)
}
pub fn get_data_dirs_from_env<'a, F>(get_env_var: &'a F) -> Vec<PathBuf>
where F: Fn(&'a str) -> Option<OsString>
{
get_paths_or_default(get_env_var, "XDG_DATA_DIRS", "/usr/local/share:/usr/share")
}
pub fn get_data_dirs() -> Vec<PathBuf> {
get_data_dirs_from_env(&env::var_os)
}
pub fn get_config_home_from_env<'a, F>(get_env_var: &'a F) -> Result<PathBuf>
where F: Fn(&'a str) -> Option<OsString>
{
get_path_or_default(get_env_var, "XDG_CONFIG_HOME", ".config")
}
pub fn get_config_home() -> Result<PathBuf> {
get_config_home_from_env(&env::var_os)
}
pub fn get_config_dirs_from_env<'a, F>(get_env_var: &'a F) -> Vec<PathBuf>
where F: Fn(&'a str) -> Option<OsString>
{
get_paths_or_default(get_env_var, "XDG_CONFIG_DIRS", "/etc/xdg")
}
pub fn get_config_dirs() -> Vec<PathBuf> {
get_config_dirs_from_env(&env::var_os)
}
pub fn get_cache_home_from_env<'a, F>(get_env_var: &'a F) -> Result<PathBuf>
where F: Fn(&'a str) -> Option<OsString>
{
get_path_or_default(get_env_var, "XDG_CACHE_HOME", ".cache")
}
pub fn get_cache_home() -> Result<PathBuf> {
get_cache_home_from_env(&env::var_os)
}
pub fn get_runtime_dir_from_env<'a, F>(get_env_var: &'a F) -> Option<PathBuf>
where F: Fn(&'a str) -> Option<OsString>
{
get_path(get_env_var, "XDG_RUNTIME_DIR")
}
pub fn get_runtime_dir() -> Option<PathBuf> {
get_runtime_dir_from_env(&env::var_os)
}