From ff1e1582dd75756cb8266422b7266c09beaf359d Mon Sep 17 00:00:00 2001 From: Chris Moore <35407569+csm123199@users.noreply.github.com> Date: Thu, 3 Dec 2020 13:09:55 -0600 Subject: [PATCH] stop cargo_home from unnecessarily getting $HOME also prevent unnecessary UTF8 compliance assertion for $CARGO_HOME --- src/registry.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/registry.rs b/src/registry.rs index cc5863c318..3d4e68ead9 100644 --- a/src/registry.rs +++ b/src/registry.rs @@ -38,14 +38,16 @@ struct CargoConfig { source: HashMap, } +/// Returns the user's configured, or default, cargo home directory. fn cargo_home() -> Result { - let default_cargo_home = dirs::home_dir() - .map(|x| x.join(".cargo")) - .chain_err(|| ErrorKind::ReadHomeDirFailure)?; - let cargo_home = std::env::var("CARGO_HOME") - .map(PathBuf::from) - .unwrap_or(default_cargo_home); - Ok(cargo_home) + // use $HOME/.cargo if no $CARGO_HOME or $CARGO_HOME has bad UTF8 + match std::env::var_os("CARGO_HOME") { + Some(cargo_home) => Ok(cargo_home.into()), + None => { + let userhome = dirs::home_dir().chain_err(|| ErrorKind::ReadHomeDirFailure)?; + Ok(userhome.join(".cargo")) + } + } } /// Find the URL of a registry