summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-09-26 08:53:56 +0800
committerGitHub <noreply@github.com>2024-09-26 08:53:56 +0800
commitd9e68409726d4a0da7792db6fed778f28026585a (patch)
tree8be1e7d567af71d7b4cb1a2580ec4dac118f0b4a /src
parent48d1b7bf0d068dc0b5ca9674bdb0b67e06332cf2 (diff)
downloadaichat-d9e68409726d4a0da7792db6fed778f28026585a.tar.gz
feat: respect XDG_CONFIG_HOME for placing config dir (#889)
Diffstat (limited to 'src')
-rw-r--r--src/config/mod.rs10
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)
}