feat: Weevil v1.0.0-beta1 - FTC Project Generator
Cross-platform tool for generating clean, testable FTC robot projects without editing the SDK installation. Features: - Standalone project generation with proper separation from SDK - Per-project SDK configuration via .weevil.toml - Local unit testing support (no robot required) - Cross-platform build/deploy scripts (Linux/macOS/Windows) - Project upgrade system preserving user code - Configuration management commands - Comprehensive test suite (11 passing tests) - Zero-warning builds Architecture: - Pure Rust implementation with embedded Gradle wrapper - Projects use deployToSDK task to copy code to FTC SDK TeamCode - Git-ready projects with automatic initialization - USB and WiFi deployment with auto-detection Commands: - weevil new <name> - Create new project - weevil upgrade <path> - Update project infrastructure - weevil config <path> - View/modify project configuration - weevil sdk status/install/update - Manage SDKs Addresses the core problem: FTC's SDK structure forces students to edit framework internals instead of separating concerns like industry standard practices. Weevil enables proper software engineering workflows for robotics education.
This commit is contained in:
60
src/commands/sdk.rs
Normal file
60
src/commands/sdk.rs
Normal file
@@ -0,0 +1,60 @@
|
||||
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)?;
|
||||
|
||||
// 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(())
|
||||
}
|
||||
Reference in New Issue
Block a user