From 738131856b698c3bb94446d1cd28439b309a3a9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Misty=20De=20M=C3=A9o?= Date: Wed, 28 Aug 2024 10:47:00 -0700 Subject: [PATCH] feat: support XDG_CONFIG_HOME for receipts refs https://github.com/axodotdev/cargo-dist/pull/1355. --- axoupdater/src/receipt.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/axoupdater/src/receipt.rs b/axoupdater/src/receipt.rs index 72510bf..03e9a0c 100644 --- a/axoupdater/src/receipt.rs +++ b/axoupdater/src/receipt.rs @@ -122,16 +122,27 @@ pub(crate) fn get_config_path(app_name: &str) -> AxoupdateResult { } else if let Ok(path) = env::var("AXOUPDATER_CONFIG_PATH") { Ok(Utf8PathBuf::from(path)) } else { + let xdg_home = env::var("XDG_CONFIG_HOME") + .ok() + .map(PathBuf::from) + .map(|h| h.join(app_name)); + let xdg_home_exists = xdg_home.as_ref().map(|h| h.exists()).unwrap_or(false); + let home = if cfg!(windows) { - env::var("LOCALAPPDATA").map(PathBuf::from).ok() + env::var("LOCALAPPDATA") + .map(PathBuf::from) + .map(|h| h.join(app_name)) + .ok() + } else if xdg_home_exists { + xdg_home } else { - homedir::my_home()?.map(|path| path.join(".config")) + homedir::my_home()?.map(|path| path.join(".config").join(app_name)) }; let Some(home) = home else { return Err(AxoupdateError::NoHome {}); }; - Ok(Utf8PathBuf::try_from(home)?.join(app_name)) + Ok(Utf8PathBuf::try_from(home)?) } }