aria-primitives 0.7.0

Process, file, and socket primitives shared by the Aria crates
Documentation
//! Resolution and validation of the current user's home directory.

use std::path::PathBuf;

pub fn resolve() -> Result<PathBuf, UserHomeError> {
    let path = std::env::var_os("HOME")
        .map(PathBuf::from)
        .ok_or(UserHomeError::NotSet)?;
    if !path.is_absolute() {
        return Err(UserHomeError::NotAbsolute { path });
    }
    Ok(path)
}

#[derive(Debug, thiserror::Error)]
pub enum UserHomeError {
    #[error("HOME is not set")]
    NotSet,

    #[error("HOME is not an absolute path: {}", path.display())]
    NotAbsolute { path: PathBuf },
}