From 963ce3c7c28fc13c15dcde7ffb0dc626123bdabe Mon Sep 17 00:00:00 2001 From: Thierry Delafontaine Date: Wed, 23 Jul 2025 02:19:18 +0200 Subject: [PATCH] Support `XDG_CONFIG_HOME` on macOS for config directory resolution (#478) --- src/config.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/config.rs b/src/config.rs index f22bd05..99e9490 100644 --- a/src/config.rs +++ b/src/config.rs @@ -2,6 +2,7 @@ use std::borrow::Cow; use std::collections::hash_map::DefaultHasher; use std::collections::{BTreeMap, HashMap}; +use std::env; use std::fmt; use std::fs::File; use std::hash::{Hash, Hasher}; @@ -837,14 +838,22 @@ pub struct ApplicationSettings { } impl ApplicationSettings { + fn get_xdg_config_home() -> Option { + env::var("XDG_CONFIG_HOME").ok().map(PathBuf::from) + } + pub fn load(cli: Iamb) -> Result> { - let mut config_dir = cli.config_directory.or_else(dirs::config_dir).unwrap_or_else(|| { - usage!( - "No user configuration directory found;\ - please specify one via -C.\n\n - For more information try '--help'" - ); - }); + let mut config_dir = cli + .config_directory + .or_else(Self::get_xdg_config_home) + .or_else(dirs::config_dir) + .unwrap_or_else(|| { + usage!( + "No user configuration directory found;\ + please specify one via -C.\n\n + For more information try '--help'" + ); + }); config_dir.push("iamb"); let config_json = config_dir.join("config.json");