about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2024-07-25 12:28:31 +0200
committerLukas Wirth <lukastw97@gmail.com>2024-07-25 12:28:31 +0200
commit516a1b47b4ac4c4201e955a8a4dfc28bf605e109 (patch)
tree7528129eb9adcf32e264322ea56a57c9fc438d73
parent3480bedcdd402dd5049e1f7279fb4f1a25fdd785 (diff)
downloadrust-516a1b47b4ac4c4201e955a8a4dfc28bf605e109.tar.gz
rust-516a1b47b4ac4c4201e955a8a4dfc28bf605e109.zip
fix: Support new cargo config get env format
-rw-r--r--src/tools/rust-analyzer/crates/project-model/src/env.rs16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/tools/rust-analyzer/crates/project-model/src/env.rs b/src/tools/rust-analyzer/crates/project-model/src/env.rs
index 88fb10a68c6..3df46e1e37d 100644
--- a/src/tools/rust-analyzer/crates/project-model/src/env.rs
+++ b/src/tools/rust-analyzer/crates/project-model/src/env.rs
@@ -75,14 +75,26 @@ pub(crate) fn cargo_config_env(
     }
     // if successful we receive `env.key.value = "value" per entry
     tracing::debug!("Discovering cargo config env by {:?}", cargo_config);
-    utf8_stdout(cargo_config).map(parse_output_cargo_config_env).unwrap_or_default()
+    utf8_stdout(cargo_config)
+        .map(parse_output_cargo_config_env)
+        .inspect(|env| {
+            tracing::debug!("Discovered cargo config env: {:?}", env);
+        })
+        .inspect_err(|err| {
+            tracing::error!("Failed to discover cargo config env: {:?}", err);
+        })
+        .unwrap_or_default()
 }
 
 fn parse_output_cargo_config_env(stdout: String) -> FxHashMap<String, String> {
     stdout
         .lines()
         .filter_map(|l| l.strip_prefix("env."))
-        .filter_map(|l| l.split_once(".value = "))
+        .filter_map(|l| {
+            l.split_once(" = ")
+                // cargo used to report it with this, keep it for a couple releases around
+                .or_else(|| l.split_once(".value = "))
+        })
         .map(|(key, value)| (key.to_owned(), value.trim_matches('"').to_owned()))
         .collect()
 }