diff --git a/src/main.rs b/src/main.rs index 3416d36..889742c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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"^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[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, } #[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, } @@ -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: