use anyhow::Result; use colored::*; use crate::sdk::SdkConfig; pub fn install_sdks() -> Result<()> { println!("{}", "Installing SDKs...".bright_yellow().bold()); println!(); let config = SdkConfig::new()?; // Install FTC SDK crate::sdk::ftc::install(&config.ftc_sdk_path, &config.android_sdk_path)?; // Install Android SDK crate::sdk::android::install(&config.android_sdk_path)?; println!(); println!("{} All SDKs installed successfully", "✓".green().bold()); config.print_status(); Ok(()) } pub fn show_status() -> Result<()> { let config = SdkConfig::new()?; config.print_status(); // Verify SDKs println!(); println!("{}", "Verification:".bright_yellow().bold()); match crate::sdk::ftc::verify(&config.ftc_sdk_path) { Ok(_) => println!("{} FTC SDK is valid", "✓".green()), Err(e) => println!("{} FTC SDK: {}", "✗".red(), e), } match crate::sdk::android::verify(&config.android_sdk_path) { Ok(_) => println!("{} Android SDK is valid", "✓".green()), Err(e) => println!("{} Android SDK: {}", "✗".red(), e), } println!(); Ok(()) } pub fn update_sdks() -> Result<()> { println!("{}", "Updating SDKs...".bright_yellow().bold()); println!(); let config = SdkConfig::new()?; // Update FTC SDK crate::sdk::ftc::update(&config.ftc_sdk_path)?; println!(); println!("{} SDKs updated successfully", "✓".green().bold()); Ok(()) }