diff --git a/src/binstall.rs b/src/binstall.rs index 5de574bb..57a83e13 100644 --- a/src/binstall.rs +++ b/src/binstall.rs @@ -1,5 +1,7 @@ use std::path::PathBuf; +use crate::PkgOverride; + mod resolve; pub use resolve::*; @@ -11,4 +13,5 @@ pub struct Options { pub dry_run: bool, pub version: Option, pub manifest_path: Option, + pub cli_overrides: PkgOverride, } diff --git a/src/binstall/resolve.rs b/src/binstall/resolve.rs index 31b885bd..9e77490e 100644 --- a/src/binstall/resolve.rs +++ b/src/binstall/resolve.rs @@ -72,12 +72,10 @@ impl Resolution { } } -#[allow(clippy::too_many_arguments)] pub async fn resolve( opts: Arc, crate_name: CrateName, desired_targets: DesiredTargets, - cli_overrides: Arc, temp_dir: Arc, install_path: Arc, client: Client, @@ -136,7 +134,7 @@ pub async fn resolve( target_meta.merge(&o); } - target_meta.merge(&cli_overrides); + target_meta.merge(&opts.cli_overrides); debug!("Found metadata: {target_meta:?}"); let fetcher_data = Data { @@ -158,7 +156,7 @@ pub async fn resolve( if let Some(o) = meta.overrides.get(&fetcher_target.to_owned()).cloned() { meta.merge(&o); } - meta.merge(&cli_overrides); + meta.merge(&opts.cli_overrides); // Generate temporary binary path let bin_path = temp_dir.join(format!("bin-{}", crate_name.name)); diff --git a/src/main.rs b/src/main.rs index df166c41..4f90b51c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -203,11 +203,11 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { // Load options let mut opts = Options::parse_from(args); - let cli_overrides = Arc::new(PkgOverride { + let cli_overrides = PkgOverride { pkg_url: opts.pkg_url.take(), pkg_fmt: opts.pkg_fmt.take(), bin_dir: opts.bin_dir.take(), - }); + }; let crate_names = take(&mut opts.crate_names); if crate_names.len() > 1 && opts.manifest_path.is_some() { return Err(BinstallError::ManifestPathConflictedWithBatchInstallation.into()); @@ -265,6 +265,7 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { dry_run: opts.dry_run, version: opts.version.take(), manifest_path: opts.manifest_path.take(), + cli_overrides, }); let tasks: Vec<_> = if !opts.dry_run && !opts.no_confirm { @@ -276,7 +277,6 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { binstall_opts.clone(), crate_name, desired_targets.clone(), - cli_overrides.clone(), temp_dir_path.clone(), install_path.clone(), client.clone(), @@ -317,7 +317,6 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { let desired_targets = desired_targets.clone(); let client = client.clone(); let crates_io_api_client = crates_io_api_client.clone(); - let cli_overrides = cli_overrides.clone(); let install_path = install_path.clone(); tokio::spawn(async move { @@ -325,7 +324,6 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { opts.clone(), crate_name, desired_targets.clone(), - cli_overrides, temp_dir_path, install_path, client,