use std::path::PathBuf;
pub fn runtime_socket_dir(
app_name: &str,
env_override: Option<&str>,
) -> PathBuf {
if let Some(env_var) = env_override
&& let Some(dir) = std::env::var_os(env_var)
{
return PathBuf::from(dir);
}
#[cfg(target_os = "linux")]
{
if let Ok(dir) = std::env::var("XDG_RUNTIME_DIR") {
return PathBuf::from(dir).join(app_name);
}
}
#[cfg(target_os = "macos")]
{
if let Ok(dir) = std::env::var("TMPDIR") {
return PathBuf::from(dir).join(app_name);
}
}
#[cfg(unix)]
{
if let Ok(user) = std::env::var("USER") {
return PathBuf::from(format!("/tmp/{}-{}", app_name, user));
}
PathBuf::from(format!("/tmp/{}", app_name))
}
#[cfg(windows)]
{
if let Ok(dir) = std::env::var("LOCALAPPDATA") {
return PathBuf::from(dir).join(app_name).join("run");
}
if let Ok(dir) = std::env::var("TEMP") {
return PathBuf::from(dir).join(app_name);
}
return PathBuf::from(format!("C:\\Temp\\{}", app_name));
}
}