mirror of
https://github.com/esp-rs/espup.git
synced 2025-09-30 14:20:35 +00:00
Simplify the handling of extra crates
This commit is contained in:
parent
32d9a385ba
commit
11034c2619
@ -19,7 +19,7 @@ pub struct Config {
|
|||||||
/// Destination of the generated export file.
|
/// Destination of the generated export file.
|
||||||
pub export_file: Option<PathBuf>,
|
pub export_file: Option<PathBuf>,
|
||||||
/// Extra crates to installed.
|
/// Extra crates to installed.
|
||||||
pub extra_crates: Option<HashSet<String>>,
|
pub extra_crates: HashSet<String>,
|
||||||
/// Host triple
|
/// Host triple
|
||||||
pub host_triple: HostTriple,
|
pub host_triple: HostTriple,
|
||||||
/// LLVM toolchain path.
|
/// LLVM toolchain path.
|
||||||
|
36
src/main.rs
36
src/main.rs
@ -86,7 +86,7 @@ pub struct InstallOpts {
|
|||||||
pub export_file: Option<PathBuf>,
|
pub export_file: Option<PathBuf>,
|
||||||
/// Comma or space list of extra crates to install.
|
/// Comma or space list of extra crates to install.
|
||||||
#[arg(short = 'c', long, required = false, value_parser = Crate::parse_crates)]
|
#[arg(short = 'c', long, required = false, value_parser = Crate::parse_crates)]
|
||||||
pub extra_crates: Option<HashSet<Crate>>,
|
pub extra_crates: HashSet<Crate>,
|
||||||
/// LLVM version.
|
/// LLVM version.
|
||||||
#[arg(short = 'x', long, default_value = "15", value_parser = ["15"])]
|
#[arg(short = 'x', long, default_value = "15", value_parser = ["15"])]
|
||||||
pub llvm_version: String,
|
pub llvm_version: String,
|
||||||
@ -211,13 +211,8 @@ async fn install(args: InstallOpts) -> Result<()> {
|
|||||||
if let Some(esp_idf_version) = &args.esp_idf_version {
|
if let Some(esp_idf_version) = &args.esp_idf_version {
|
||||||
let repo = EspIdfRepo::new(esp_idf_version, args.profile_minimal, &targets);
|
let repo = EspIdfRepo::new(esp_idf_version, args.profile_minimal, &targets);
|
||||||
to_install.push(Box::new(repo));
|
to_install.push(Box::new(repo));
|
||||||
if let Some(ref mut extra_crates) = extra_crates {
|
|
||||||
extra_crates.insert(Crate::new("ldproxy"));
|
extra_crates.insert(Crate::new("ldproxy"));
|
||||||
} else {
|
|
||||||
let mut crates = HashSet::new();
|
|
||||||
crates.insert(Crate::new("ldproxy"));
|
|
||||||
extra_crates = Some(crates);
|
|
||||||
};
|
|
||||||
} else {
|
} else {
|
||||||
targets.iter().for_each(|target| {
|
targets.iter().for_each(|target| {
|
||||||
if target.xtensa() {
|
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 {
|
||||||
for extra_crate in extra_crates {
|
to_install.push(Box::new(extra_crate.to_owned()));
|
||||||
to_install.push(Box::new(extra_crate.to_owned()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// With a list of applications to install, install them all in parallel.
|
// 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 {
|
let config = Config {
|
||||||
esp_idf_version: args.esp_idf_version,
|
esp_idf_version: args.esp_idf_version,
|
||||||
export_file: Some(export_file.clone()),
|
export_file: Some(export_file.clone()),
|
||||||
extra_crates: extra_crates.as_ref().map(|extra_crates| {
|
extra_crates: extra_crates
|
||||||
extra_crates
|
.iter()
|
||||||
.iter()
|
.map(|x| x.name.clone())
|
||||||
.map(|x| x.name.clone())
|
.collect::<HashSet<_>>(),
|
||||||
.collect::<HashSet<String>>()
|
|
||||||
}),
|
|
||||||
host_triple,
|
host_triple,
|
||||||
llvm_path,
|
llvm_path,
|
||||||
nightly_version: args.nightly_version,
|
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);
|
info!("{} Uninstalling extra crates", emoji::WRENCH);
|
||||||
let mut updated_extra_crates: HashSet<String> =
|
let mut updated_extra_crates = config_file.config.extra_crates.clone();
|
||||||
config_file.config.extra_crates.clone().unwrap();
|
for extra_crate in &config_file.config.extra_crates.clone() {
|
||||||
for extra_crate in &config_file.config.extra_crates.clone().unwrap() {
|
|
||||||
updated_extra_crates.remove(extra_crate);
|
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()?;
|
config_file.save()?;
|
||||||
Crate::uninstall(extra_crate)?;
|
Crate::uninstall(extra_crate)?;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user