diff options
| author | sigoden <sigoden@gmail.com> | 2024-09-26 08:53:56 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-26 08:53:56 +0800 |
| commit | d9e68409726d4a0da7792db6fed778f28026585a (patch) | |
| tree | 8be1e7d567af71d7b4cb1a2580ec4dac118f0b4a /src/config/mod.rs | |
| parent | 48d1b7bf0d068dc0b5ca9674bdb0b67e06332cf2 (diff) | |
| download | aichat-d9e68409726d4a0da7792db6fed778f28026585a.tar.gz | |
feat: respect XDG_CONFIG_HOME for placing config dir (#889)
Diffstat (limited to 'src/config/mod.rs')
| -rw-r--r-- | src/config/mod.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index a5ced25..4aa0873 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -247,13 +247,13 @@ impl Config { } pub fn config_dir() -> Result<PathBuf> { - let env_name = get_env_name("config_dir"); - let path = if let Some(v) = env::var_os(env_name) { + let path = if let Ok(v) = env::var(get_env_name("config_dir")) { PathBuf::from(v) + } else if let Ok(v) = env::var("XDG_CONFIG_HOME") { + PathBuf::from(v).join(env!("CARGO_CRATE_NAME")) } else { - let mut dir = dirs::config_dir().ok_or_else(|| anyhow!("Not found config dir"))?; - dir.push(env!("CARGO_CRATE_NAME")); - dir + let dir = dirs::config_dir().ok_or_else(|| anyhow!("Not available config dir"))?; + dir.join(env!("CARGO_CRATE_NAME")) }; Ok(path) } |
