use std::path::PathBuf;
pub fn get_best_resources_dir() -> PathBuf {
if cfg!(debug_assertions) {
return exe_dir().join("resources");
}
if cfg!(target_os = "windows") {
if let Ok(local_app_data) = std::env::var("LOCALAPPDATA") {
PathBuf::from(local_app_data)
.join("emmylua_ls")
.join("resources")
} else {
exe_dir().join("resources")
}
} else {
if let Ok(xdg_data_home) = std::env::var("XDG_DATA_HOME") {
PathBuf::from(xdg_data_home)
.join("emmylua_ls")
.join("resources")
} else {
if let Ok(home) = std::env::var("HOME") {
PathBuf::from(home)
.join(".local")
.join("share")
.join("emmylua_ls")
.join("resources")
} else {
exe_dir().join("resources")
}
}
}
}
fn exe_dir() -> PathBuf {
let mut exe = std::env::current_exe().expect("executable available");
exe.pop();
exe
}