From 464a77bf077074373bc33491836f436dc7012bfe Mon Sep 17 00:00:00 2001 From: pojk Date: Wed, 2 Apr 2025 13:51:29 +0300 Subject: [PATCH 1/2] Add support for XDG_CONFIG_HOME in justfile search paths --- src/search.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/search.rs b/src/search.rs index 09d8f1a5ee..691a889774 100644 --- a/src/search.rs +++ b/src/search.rs @@ -26,6 +26,14 @@ impl Search { .join(DEFAULT_JUSTFILE_NAME), ); + if let Some(xdg_config_home) = std::env::var_os("XDG_CONFIG_HOME") { + paths.push( + PathBuf::from(xdg_config_home) + .join("just") + .join(DEFAULT_JUSTFILE_NAME) + ); + }; + for justfile_name in JUSTFILE_NAMES { paths.push(home_dir.join(justfile_name)); } From d3756ba4a360528a3444f1a6b9e516d374119916 Mon Sep 17 00:00:00 2001 From: pojk Date: Wed, 2 Apr 2025 15:03:50 +0300 Subject: [PATCH 2/2] add tests --- src/search.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/search.rs b/src/search.rs index 691a889774..19ae73f0d0 100644 --- a/src/search.rs +++ b/src/search.rs @@ -395,4 +395,34 @@ mod tests { assert_eq!(have, Path::new(want)); } } + #[test] + fn global_justfile_path_from_xdg_env(){ + let old_value = std::env::var_os("XDG_CONFIG_HOME"); + + std::env::set_var("XDG_CONFIG_HOME", "/test/config"); + + let paths = Search::global_justfile_paths(); + assert!(paths.contains(&PathBuf::from("/test/config/just/justfile"))); + + if let Some(old) = old_value { + std::env::set_var("XDG_CONFIG_HOME", old); + } else { + std::env::remove_var("XDG_CONFIG_HOME"); + } + } + #[test] + fn global_justfile_path_when_xdg_env_not_set(){ + let old_value = std::env::var_os("XDG_CONFIG_HOME"); + + std::env::set_var("XDG_CONFIG_HOME", ""); + + let paths = Search::global_justfile_paths(); + assert!(!paths.contains(&PathBuf::from("/test/config/just/justfile"))); + + if let Some(old) = old_value { + std::env::set_var("XDG_CONFIG_HOME", old); + } else { + std::env::remove_var("XDG_CONFIG_HOME"); + } + } }