From a9e2ef11f19c3322cf0ae85379c0ae24a1ca0c4e Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Wed, 9 Aug 2023 17:41:20 +1000 Subject: [PATCH] Fix reading env `CARGO_REGISTRIES_{registry_name}_INDEX` (#1258) Try bogth original and upper-case version. Signed-off-by: Jiahao XU --- crates/bin/src/entry.rs | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/crates/bin/src/entry.rs b/crates/bin/src/entry.rs index 1005b390..7bb6fa32 100644 --- a/crates/bin/src/entry.rs +++ b/crates/bin/src/entry.rs @@ -149,18 +149,29 @@ pub fn install_crates( .registry .or_else(|| config.registry.and_then(|registry| registry.default)) { - env::var(format!("CARGO_REGISTRIES_{registry_name}_INDEX")) - .map(Cow::Owned) - .or_else(|_| { - config - .registries - .as_ref() - .and_then(|registries| registries.get(®istry_name)) - .and_then(|registry| registry.index.as_deref().map(Cow::Borrowed)) - .ok_or_else(|| BinstallError::UnknownRegistryName(registry_name)) - })? - .parse() - .map_err(BinstallError::from)? + let registry_name_lowercase = registry_name.to_lowercase(); + + let v = env::vars().find_map(|(k, v)| { + let name_lowercase = k + .strip_prefix("CARGO_REGISTRIES_")? + .strip_suffix("_INDEX")? + .to_lowercase(); + + (name_lowercase == registry_name_lowercase).then_some(v) + }); + + if let Some(v) = &v { + v + } else { + config + .registries + .as_ref() + .and_then(|registries| registries.get(®istry_name)) + .and_then(|registry| registry.index.as_deref()) + .ok_or_else(|| BinstallError::UnknownRegistryName(registry_name))? + } + .parse() + .map_err(BinstallError::from)? } else { Default::default() },