use super::{env_path, KnownPaths};
use std::path::PathBuf;
#[derive(Debug, Clone, Copy, Default)]
pub struct WindowsKnownPaths;
impl WindowsKnownPaths {
pub const fn new() -> Self {
Self
}
}
impl crate::sealed::Sealed for WindowsKnownPaths {}
impl KnownPaths for WindowsKnownPaths {
fn home(&self) -> Option<PathBuf> {
env_path("HOME")
.or_else(|| env_path("USERPROFILE"))
.or_else(dirs::home_dir)
}
fn config(&self) -> Option<PathBuf> {
env_path("XDG_CONFIG_HOME")
.map(|b| b.join("hotl"))
.or_else(|| local_app_data().map(|b| b.join("hotl").join("config")))
}
fn data(&self) -> Option<PathBuf> {
env_path("XDG_DATA_HOME")
.map(|b| b.join("hotl"))
.or_else(|| local_app_data().map(|b| b.join("hotl").join("data")))
}
fn runtime(&self) -> Option<PathBuf> {
env_path("XDG_RUNTIME_DIR").map(|b| b.join("hotl"))
}
}
fn local_app_data() -> Option<PathBuf> {
env_path("LOCALAPPDATA").or_else(dirs::data_local_dir)
}