mirror of
https://github.com/esp-rs/espup.git
synced 2025-09-28 13:20:41 +00:00
refactor: ♻️ Move parse_targets into targets mod
This commit is contained in:
parent
0f87e8ccc7
commit
6890cc90f5
@ -4,12 +4,10 @@ use crate::llvm_toolchain::LlvmToolchain;
|
||||
use crate::rust_toolchain::{
|
||||
check_rust_installation, get_rustup_home, install_riscv_target, RustCrate, RustToolchain,
|
||||
};
|
||||
use crate::targets::Target;
|
||||
use crate::targets::{parse_targets, Target};
|
||||
#[cfg(windows)]
|
||||
use crate::utils::check_arguments;
|
||||
use crate::utils::{
|
||||
clear_dist_folder, export_environment, logging::initialize_logger, parse_targets,
|
||||
};
|
||||
use crate::utils::{clear_dist_folder, export_environment, logging::initialize_logger};
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
use embuild::espidf::{parse_esp_idf_git_ref, EspIdfRemote};
|
||||
|
@ -1,5 +1,8 @@
|
||||
//! ESP32 chip variants support.
|
||||
|
||||
use crate::emoji;
|
||||
use log::debug;
|
||||
use std::collections::HashSet;
|
||||
use strum::{Display, EnumString};
|
||||
|
||||
#[derive(Clone, Copy, Hash, PartialEq, Eq, Debug, Display, EnumString)]
|
||||
@ -18,3 +21,77 @@ pub enum Target {
|
||||
#[strum(serialize = "esp32c3")]
|
||||
ESP32C3,
|
||||
}
|
||||
|
||||
impl Target {
|
||||
pub fn from_str(s: &str) -> Option<Self> {
|
||||
match s {
|
||||
"esp32" => Some(Target::ESP32),
|
||||
"esp32s2" => Some(Target::ESP32S2),
|
||||
"esp32s3" => Some(Target::ESP32S3),
|
||||
"esp32c3" => Some(Target::ESP32C3),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns a vector of Chips from a comma or space separated string.
|
||||
pub fn parse_targets(targets_str: &str) -> Result<HashSet<Target>, String> {
|
||||
debug!("{} Parsing targets: {}", emoji::DEBUG, targets_str);
|
||||
let mut targets: HashSet<Target> = HashSet::new();
|
||||
if targets_str.contains("all") {
|
||||
targets.insert(Target::ESP32);
|
||||
targets.insert(Target::ESP32S2);
|
||||
targets.insert(Target::ESP32S3);
|
||||
targets.insert(Target::ESP32C3);
|
||||
return Ok(targets);
|
||||
}
|
||||
let targets_str: HashSet<&str> = if targets_str.contains(' ') || targets_str.contains(',') {
|
||||
targets_str.split([',', ' ']).collect()
|
||||
} else {
|
||||
vec![targets_str].into_iter().collect()
|
||||
};
|
||||
|
||||
for target in targets_str {
|
||||
targets.insert(Target::from_str(target).unwrap());
|
||||
}
|
||||
debug!("{} Parsed targets: {:?}", emoji::DEBUG, targets);
|
||||
Ok(targets)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::parse_targets;
|
||||
use crate::Target;
|
||||
#[test]
|
||||
fn test_parse_targets() {
|
||||
assert_eq!(
|
||||
parse_targets("esp32"),
|
||||
Ok([Target::ESP32].into_iter().collect())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_targets("esp32,esp32s2"),
|
||||
Ok([Target::ESP32, Target::ESP32S2].into_iter().collect())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_targets("esp32s3 esp32"),
|
||||
Ok([Target::ESP32S3, Target::ESP32].into_iter().collect())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_targets("esp32s3,esp32,esp32c3"),
|
||||
Ok([Target::ESP32S3, Target::ESP32, Target::ESP32C3]
|
||||
.into_iter()
|
||||
.collect())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_targets("all"),
|
||||
Ok([
|
||||
Target::ESP32,
|
||||
Target::ESP32S2,
|
||||
Target::ESP32S3,
|
||||
Target::ESP32C3
|
||||
]
|
||||
.into_iter()
|
||||
.collect())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
73
src/utils.rs
73
src/utils.rs
@ -1,12 +1,10 @@
|
||||
use crate::emoji;
|
||||
use crate::espidf::get_dist_path;
|
||||
use crate::targets::Target;
|
||||
use anyhow::{bail, Result};
|
||||
use dirs::home_dir;
|
||||
use flate2::bufread::GzDecoder;
|
||||
use log::{debug, info};
|
||||
use log::info;
|
||||
use std::{
|
||||
collections::HashSet,
|
||||
fs::{create_dir_all, remove_dir_all, File},
|
||||
io::{copy, BufReader, Write},
|
||||
path::{Path, PathBuf},
|
||||
@ -34,37 +32,6 @@ pub fn clear_dist_folder() -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Returns a vector of Chips from a comma or space separated string.
|
||||
pub fn parse_targets(targets_str: &str) -> Result<HashSet<Target>, String> {
|
||||
debug!("{} Parsing targets: {}", emoji::DEBUG, targets_str);
|
||||
let mut targets: HashSet<Target> = HashSet::new();
|
||||
if targets_str.contains("all") {
|
||||
targets.insert(Target::ESP32);
|
||||
targets.insert(Target::ESP32S2);
|
||||
targets.insert(Target::ESP32S3);
|
||||
targets.insert(Target::ESP32C3);
|
||||
return Ok(targets);
|
||||
}
|
||||
let targets_str: HashSet<&str> = if targets_str.contains(' ') || targets_str.contains(',') {
|
||||
targets_str.split([',', ' ']).collect()
|
||||
} else {
|
||||
vec![targets_str].into_iter().collect()
|
||||
};
|
||||
for target in targets_str {
|
||||
match target {
|
||||
"esp32" => targets.insert(Target::ESP32),
|
||||
"esp32s2" => targets.insert(Target::ESP32S2),
|
||||
"esp32s3" => targets.insert(Target::ESP32S3),
|
||||
"esp32c3" => targets.insert(Target::ESP32C3),
|
||||
_ => {
|
||||
return Err(format!("Unknown target: {}", target));
|
||||
}
|
||||
};
|
||||
}
|
||||
debug!("{} Parsed targets: {:?}", emoji::DEBUG, targets);
|
||||
Ok(targets)
|
||||
}
|
||||
|
||||
/// Returns the path to the home directory.
|
||||
pub fn get_home_dir() -> String {
|
||||
home_dir().unwrap().display().to_string()
|
||||
@ -186,41 +153,3 @@ pub fn check_arguments(targets: &HashSet<Target>, espidf_version: &Option<String
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::utils::parse_targets;
|
||||
use crate::Target;
|
||||
#[test]
|
||||
fn test_parse_targets() {
|
||||
assert_eq!(
|
||||
parse_targets("esp32"),
|
||||
Ok([Target::ESP32].into_iter().collect())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_targets("esp32,esp32s2"),
|
||||
Ok([Target::ESP32, Target::ESP32S2].into_iter().collect())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_targets("esp32s3 esp32"),
|
||||
Ok([Target::ESP32S3, Target::ESP32].into_iter().collect())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_targets("esp32s3,esp32,esp32c3"),
|
||||
Ok([Target::ESP32S3, Target::ESP32, Target::ESP32C3]
|
||||
.into_iter()
|
||||
.collect())
|
||||
);
|
||||
assert_eq!(
|
||||
parse_targets("all"),
|
||||
Ok([
|
||||
Target::ESP32,
|
||||
Target::ESP32S2,
|
||||
Target::ESP32S3,
|
||||
Target::ESP32C3
|
||||
]
|
||||
.into_iter()
|
||||
.collect())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user