From ffe6e4868f6fc85d0799e750618221665c4d4bc9 Mon Sep 17 00:00:00 2001 From: SFG545 Date: Sun, 14 Jun 2026 00:35:40 -0500 Subject: [PATCH] refactor: enhance normalize_string_option to strip quotes from input --- src/build_options.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/build_options.rs b/src/build_options.rs index 1b806d1..f02d193 100644 --- a/src/build_options.rs +++ b/src/build_options.rs @@ -14,7 +14,15 @@ fn parse_boolish_option(value: &str) -> Option { fn normalize_string_option(value: Option<&'static str>) -> Option { value.and_then(|value| { - let trimmed = value.trim(); + let mut trimmed = value.trim(); + if trimmed.len() >= 2 { + let bytes = trimmed.as_bytes(); + let quoted = (bytes[0] == b'\'' && bytes[trimmed.len() - 1] == b'\'') + || (bytes[0] == b'"' && bytes[trimmed.len() - 1] == b'"'); + if quoted { + trimmed = trimmed[1..trimmed.len() - 1].trim(); + } + } (!trimmed.is_empty()).then(|| trimmed.to_string()) }) } @@ -99,6 +107,19 @@ mod tests { assert_eq!(normalize_string_option(None), None); } + #[test] + fn normalize_string_option_strips_build_system_quotes() { + assert_eq!( + normalize_string_option(Some("'cargo'")), + Some("cargo".to_string()) + ); + assert_eq!( + normalize_string_option(Some(" \"meson-bootstrap\" ")), + Some("meson-bootstrap".to_string()) + ); + assert_eq!(normalize_string_option(Some(" '' ")), None); + } + #[test] fn build_tool_package_option_maps_supported_builders() { assert_eq!(