feat: ️ Avoid using a hardcoded Xtensa Rust version

This commit is contained in:
Sergio Gasquez 2022-11-03 18:17:28 +01:00
parent 275c0ccfc4
commit 76c903b9da

View File

@ -17,7 +17,10 @@ use espup::{
},
gcc::{get_toolchain_name, install_gcc_targets},
llvm::Llvm,
rust::{check_rust_installation, install_riscv_target, Crate, XtensaRust},
rust::{
check_rust_installation, get_latest_xtensa_rust_version, install_riscv_target, Crate,
XtensaRust,
},
},
};
use log::{debug, info, warn};
@ -35,8 +38,6 @@ const DEFAULT_EXPORT_FILE: &str = "export-esp.ps1";
const DEFAULT_EXPORT_FILE: &str = "export-esp.sh";
/// Xtensa Rust Toolchain version regex.
const RE_TOOLCHAIN_VERSION: &str = r"^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)\.(?P<subpatch>0|[1-9]\d*)?$";
/// Latest Xtensa Rust Toolchain version.
const LATEST_TOOLCHAIN_VERSION: &str = "1.65.0.0";
#[derive(Parser)]
#[command(
@ -103,8 +104,8 @@ pub struct InstallOpts {
#[arg(short = 't', long, default_value = "all")]
pub targets: String,
/// Xtensa Rust toolchain version.
#[arg(short = 'v', long, default_value = LATEST_TOOLCHAIN_VERSION, value_parser = parse_version)]
pub toolchain_version: String,
#[arg(short = 'v', long, value_parser = parse_version)]
pub toolchain_version: Option<String>,
}
#[derive(Debug, Parser)]
@ -116,7 +117,7 @@ pub struct UpdateOpts {
#[arg(short = 'l', long, default_value = "info", value_parser = ["debug", "info", "warn", "error"])]
pub log_level: String,
/// Xtensa Rust toolchain version.
#[arg(short = 'v', long, default_value = LATEST_TOOLCHAIN_VERSION, value_parser = parse_version)]
#[arg(short = 'v', long, value_parser = parse_version)]
pub toolchain_version: Option<String>,
}
@ -153,7 +154,13 @@ fn install(args: InstallOpts) -> Result<()> {
|| targets.contains(&Target::ESP32S2)
|| targets.contains(&Target::ESP32S3)
{
Some(XtensaRust::new(&args.toolchain_version, &host_triple))
let xtensa_rust: XtensaRust = if let Some(toolchain_version) = &args.toolchain_version {
XtensaRust::new(toolchain_version, &host_triple)
} else {
let latest_version = get_latest_xtensa_rust_version()?;
XtensaRust::new(&latest_version, &host_triple)
};
Some(xtensa_rust)
} else {
None
};
@ -308,12 +315,12 @@ fn update(args: UpdateOpts) -> Result<()> {
info!("{} Updating ESP Rust environment", emoji::DISC);
let host_triple = get_host_triple(args.default_host)?;
let mut config = Config::load().unwrap();
let xtensa_rust: XtensaRust;
if let Some(toolchain_version) = args.toolchain_version {
xtensa_rust = XtensaRust::new(&toolchain_version, &host_triple);
let xtensa_rust: XtensaRust = if let Some(toolchain_version) = args.toolchain_version {
XtensaRust::new(&toolchain_version, &host_triple)
} else {
xtensa_rust = XtensaRust::new(LATEST_TOOLCHAIN_VERSION, &host_triple);
}
let latest_version = get_latest_xtensa_rust_version()?;
XtensaRust::new(&latest_version, &host_triple)
};
debug!(
"{} Arguments: