fix: Support new cargo config get env format

This commit is contained in:
Lukas Wirth 2024-07-25 12:28:31 +02:00
parent 62a7468d46
commit c7d6fe5257

View file

@ -75,14 +75,26 @@ pub(crate) fn cargo_config_env(
} }
// if successful we receive `env.key.value = "value" per entry // if successful we receive `env.key.value = "value" per entry
tracing::debug!("Discovering cargo config env by {:?}", cargo_config); 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> { fn parse_output_cargo_config_env(stdout: String) -> FxHashMap<String, String> {
stdout stdout
.lines() .lines()
.filter_map(|l| l.strip_prefix("env.")) .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())) .map(|(key, value)| (key.to_owned(), value.trim_matches('"').to_owned()))
.collect() .collect()
} }