From 11034c2619ced70d716a94959d1a3c83d843ea95 Mon Sep 17 00:00:00 2001 From: Jesse Braham Date: Wed, 25 Jan 2023 11:23:36 -0800 Subject: [PATCH] Simplify the handling of extra crates --- src/config.rs | 2 +- src/main.rs | 36 +++++++++++++----------------------- 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/config.rs b/src/config.rs index 08ecbac..952cab8 100644 --- a/src/config.rs +++ b/src/config.rs @@ -19,7 +19,7 @@ pub struct Config { /// Destination of the generated export file. pub export_file: Option, /// Extra crates to installed. - pub extra_crates: Option>, + pub extra_crates: HashSet, /// Host triple pub host_triple: HostTriple, /// LLVM toolchain path. diff --git a/src/main.rs b/src/main.rs index 84a5fc8..57aa0be 100644 --- a/src/main.rs +++ b/src/main.rs @@ -86,7 +86,7 @@ pub struct InstallOpts { pub export_file: Option, /// Comma or space list of extra crates to install. #[arg(short = 'c', long, required = false, value_parser = Crate::parse_crates)] - pub extra_crates: Option>, + pub extra_crates: HashSet, /// LLVM version. #[arg(short = 'x', long, default_value = "15", value_parser = ["15"])] pub llvm_version: String, @@ -211,13 +211,8 @@ async fn install(args: InstallOpts) -> Result<()> { if let Some(esp_idf_version) = &args.esp_idf_version { let repo = EspIdfRepo::new(esp_idf_version, args.profile_minimal, &targets); to_install.push(Box::new(repo)); - if let Some(ref mut extra_crates) = extra_crates { - extra_crates.insert(Crate::new("ldproxy")); - } else { - let mut crates = HashSet::new(); - crates.insert(Crate::new("ldproxy")); - extra_crates = Some(crates); - }; + + extra_crates.insert(Crate::new("ldproxy")); } else { targets.iter().for_each(|target| { if target.xtensa() { @@ -233,10 +228,8 @@ async fn install(args: InstallOpts) -> Result<()> { } } - if let Some(ref extra_crates) = &extra_crates { - for extra_crate in extra_crates { - to_install.push(Box::new(extra_crate.to_owned())); - } + for extra_crate in &extra_crates { + to_install.push(Box::new(extra_crate.to_owned())); } // With a list of applications to install, install them all in parallel. @@ -277,12 +270,10 @@ async fn install(args: InstallOpts) -> Result<()> { let config = Config { esp_idf_version: args.esp_idf_version, export_file: Some(export_file.clone()), - extra_crates: extra_crates.as_ref().map(|extra_crates| { - extra_crates - .iter() - .map(|x| x.name.clone()) - .collect::>() - }), + extra_crates: extra_crates + .iter() + .map(|x| x.name.clone()) + .collect::>(), host_triple, llvm_path, nightly_version: args.nightly_version, @@ -362,13 +353,12 @@ async fn uninstall(args: UninstallOpts) -> Result<()> { } } - if config_file.config.extra_crates.is_some() { + if !config_file.config.extra_crates.is_empty() { info!("{} Uninstalling extra crates", emoji::WRENCH); - let mut updated_extra_crates: HashSet = - config_file.config.extra_crates.clone().unwrap(); - for extra_crate in &config_file.config.extra_crates.clone().unwrap() { + let mut updated_extra_crates = config_file.config.extra_crates.clone(); + for extra_crate in &config_file.config.extra_crates.clone() { updated_extra_crates.remove(extra_crate); - config_file.config.extra_crates = Some(updated_extra_crates.clone()); + config_file.config.extra_crates = updated_extra_crates.clone(); config_file.save()?; Crate::uninstall(extra_crate)?; }