From 752e25c1313db7de34a3acf0013cb29f4fbeb098 Mon Sep 17 00:00:00 2001 From: Faria22 Date: Thu, 18 Dec 2025 13:07:44 -0500 Subject: [PATCH] Recursive is off by default for symbolic folders --- src/config.rs | 61 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/src/config.rs b/src/config.rs index ac44169..4e7205c 100644 --- a/src/config.rs +++ b/src/config.rs @@ -89,6 +89,8 @@ pub enum DefaultTargetType { pub struct Settings { #[serde(default)] default_target_type: DefaultTargetType, + #[serde(default)] + recurse: bool, } #[derive(Debug, Clone)] @@ -348,8 +350,8 @@ fn merge_configuration_files( files: Files::default(), variables: Variables::default(), packages: packages_map, - recurse: true, - settings: Settings::default(), + recurse: global.settings.recurse, + settings: global.settings.clone(), }; // Merge all the packages @@ -827,4 +829,59 @@ mod test { &FileTarget::Symbolic(PathBuf::from("~/.SliverBodacious").into()) ); } + + #[test] + fn setting_recurse_default() { + let global: GlobalConfig = toml::from_str( + r#" + [settings] + + [cat] + depends = [] + + [cat.files] + cat = '~/.QuarticCat' + "#, + ) + .unwrap(); + + let local: LocalConfig = toml::from_str( + r#" + packages = ['cat'] + "#, + ) + .unwrap(); + + let merged_config = merge_configuration_files(global, local, None).unwrap(); + + assert!(!merged_config.recurse); + } + + #[test] + fn setting_recurse_true() { + let global: GlobalConfig = toml::from_str( + r#" + [settings] + recurse = true + + [cat] + depends = [] + + [cat.files] + cat = '~/.QuarticCat' + "#, + ) + .unwrap(); + + let local: LocalConfig = toml::from_str( + r#" + packages = ['cat'] + "#, + ) + .unwrap(); + + let merged_config = merge_configuration_files(global, local, None).unwrap(); + + assert!(merged_config.recurse); + } }