1use crate::error::{Error, Result};
2
3const EUNOMIA_HOME_ENV: &str = "EUNOMIA_HOME";
4
5pub fn get_eunomia_home() -> Result<String> {
7 let eunomia_home = std::env::var(EUNOMIA_HOME_ENV);
8 if let Ok(home) = eunomia_home {
9 Ok(home)
10 } else if let Some(home) = home::home_dir() {
11 let home = home.join(".eunomia");
12 if !home.exists() {
13 std::fs::create_dir_all(&home).map_err(Error::IOErr)?;
14 }
15 Ok(home.to_string_lossy().to_string())
16 } else {
17 Err(Error::Other(
18 "home dir not found. Please set EUNOMIA_HOME env.".to_string(),
19 ))
20 }
21}