sunox 0.0.14

Generate AI music from your terminal via direct Suno web workflows
use std::path::PathBuf;

pub(crate) fn project_config_dir() -> Option<PathBuf> {
    non_empty_env_path("XDG_CONFIG_HOME")
        .map(|dir| dir.join("sunox"))
        .or_else(|| {
            directories::ProjectDirs::from("com", "sunox", "sunox")
                .map(|dirs| dirs.config_dir().to_path_buf())
        })
}

pub(crate) fn user_home_dir() -> Option<PathBuf> {
    non_empty_env_path("HOME")
        .or_else(|| directories::UserDirs::new().map(|dirs| dirs.home_dir().to_path_buf()))
}

fn non_empty_env_path(key: &str) -> Option<PathBuf> {
    std::env::var_os(key)
        .filter(|value| !value.is_empty())
        .map(PathBuf::from)
}

#[cfg(test)]
mod tests {
    use super::non_empty_env_path;

    #[test]
    fn missing_path_override_is_ignored() {
        assert_eq!(non_empty_env_path("SUNOX_TEST_MISSING_PATH"), None);
    }
}