diff --git a/src/helpers.rs b/src/helpers.rs index a1ef3c5f..570b243e 100644 --- a/src/helpers.rs +++ b/src/helpers.rs @@ -172,22 +172,25 @@ pub async fn download_tar_based_and_visit -pub fn get_install_path>(install_path: Option

) -> Option { +/// +/// Return (install_path, is_custom_install_path) +pub fn get_install_path>(install_path: Option

) -> (Option, bool) { // Command line override first first if let Some(p) = install_path { - return Some(PathBuf::from(p.as_ref())); + return (Some(PathBuf::from(p.as_ref())), true); } // Environmental variables if let Ok(p) = std::env::var("CARGO_INSTALL_ROOT") { debug!("using CARGO_INSTALL_ROOT ({p})"); let b = PathBuf::from(p); - return Some(b.join("bin")); + return (Some(b.join("bin")), true); } + if let Ok(p) = std::env::var("CARGO_HOME") { debug!("using CARGO_HOME ({p})"); let b = PathBuf::from(p); - return Some(b.join("bin")); + return (Some(b.join("bin")), false); } // Standard $HOME/.cargo/bin @@ -196,7 +199,7 @@ pub fn get_install_path>(install_path: Option

) -> Option>(install_path: Option

) -> Option Result<()> { let desired_targets = get_desired_targets(&opts.targets); // Compute install directory - let custom_install_path = opts.install_path.is_some(); - let install_path: Arc = Arc::from( - get_install_path(opts.install_path.as_deref()).ok_or_else(|| { - error!("No viable install path found of specified, try `--install-path`"); - miette!("No install path found or specified") - })?, - ); + let (install_path, custom_install_path) = get_install_path(opts.install_path.as_deref()); + let install_path: Arc = Arc::from(install_path.ok_or_else(|| { + error!("No viable install path found of specified, try `--install-path`"); + miette!("No install path found or specified") + })?); debug!("Using install path: {}", install_path.display()); // Create a temporary directory for downloads etc.