Auto merge of #17697 - Veykril:cargo-env, r=Veykril

fix: Support new cargo config get env format

Fixes https://github.com/rust-lang/rust-analyzer/issues/17686
This commit is contained in:
bors 2024-07-25 10:30:03 +00:00
commit fa5ff86e04

View file

@ -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()
}