Skip to main content

aria_primitives/
user_home.rs

1//! Resolution and validation of the current user's home directory.
2
3use std::path::PathBuf;
4
5pub fn resolve() -> Result<PathBuf, UserHomeError> {
6    let path = std::env::var_os("HOME")
7        .map(PathBuf::from)
8        .ok_or(UserHomeError::NotSet)?;
9    if !path.is_absolute() {
10        return Err(UserHomeError::NotAbsolute { path });
11    }
12    Ok(path)
13}
14
15#[derive(Debug, thiserror::Error)]
16pub enum UserHomeError {
17    #[error("HOME is not set")]
18    NotSet,
19
20    #[error("HOME is not an absolute path: {}", path.display())]
21    NotAbsolute { path: PathBuf },
22}