From 0188439c08868dda60a2c2944fc0e71556df023d Mon Sep 17 00:00:00 2001 From: Eric Ratliff Date: Mon, 26 Jan 2026 18:27:12 -0600 Subject: [PATCH] Tied into the right adb file --- src/commands/upgrade.rs | 2 +- src/project/config.rs | 18 ++++++++++++++++-- src/project/mod.rs | 39 ++++++++++++++++++++++++--------------- 3 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/commands/upgrade.rs b/src/commands/upgrade.rs index e31c1e2..328b4ae 100644 --- a/src/commands/upgrade.rs +++ b/src/commands/upgrade.rs @@ -32,7 +32,7 @@ pub fn upgrade_project(path: &str) -> Result<()> { let project_name = project_path.file_name() .and_then(|n| n.to_str()) .unwrap_or("unknown"); - crate::project::ProjectConfig::new(project_name, sdk_config.ftc_sdk_path.clone())? + crate::project::ProjectConfig::new(project_name, sdk_config.ftc_sdk_path.clone(), sdk_config.android_sdk_path.clone())? }; println!("Current SDK: {}", project_config.ftc_sdk_path.display()); diff --git a/src/project/config.rs b/src/project/config.rs index af609dc..ea5038b 100644 --- a/src/project/config.rs +++ b/src/project/config.rs @@ -9,10 +9,16 @@ pub struct ProjectConfig { pub weevil_version: String, pub ftc_sdk_path: PathBuf, pub ftc_sdk_version: String, + #[serde(default = "default_android_sdk_path")] + pub android_sdk_path: PathBuf, +} + +fn default_android_sdk_path() -> PathBuf { + PathBuf::new() } impl ProjectConfig { - pub fn new(project_name: &str, ftc_sdk_path: PathBuf) -> Result { + pub fn new(project_name: &str, ftc_sdk_path: PathBuf, android_sdk_path: PathBuf) -> Result { let ftc_sdk_version = crate::sdk::ftc::get_version(&ftc_sdk_path) .unwrap_or_else(|_| "unknown".to_string()); @@ -21,6 +27,7 @@ impl ProjectConfig { weevil_version: "1.0.0".to_string(), ftc_sdk_path, ftc_sdk_version, + android_sdk_path, }) } @@ -34,9 +41,15 @@ impl ProjectConfig { let contents = fs::read_to_string(&config_path) .context("Failed to read .weevil.toml")?; - let config: ProjectConfig = toml::from_str(&contents) + let mut config: ProjectConfig = toml::from_str(&contents) .context("Failed to parse .weevil.toml")?; + // Migrate old configs that don't have android_sdk_path + if config.android_sdk_path.as_os_str().is_empty() { + let sdk_config = crate::sdk::SdkConfig::new()?; + config.android_sdk_path = sdk_config.android_sdk_path; + } + Ok(config) } @@ -77,6 +90,7 @@ impl ProjectConfig { println!(); println!("{:.<20} {}", "FTC SDK Path", self.ftc_sdk_path.display().to_string().bright_white()); println!("{:.<20} {}", "FTC SDK Version", self.ftc_sdk_version.bright_white()); + println!("{:.<20} {}", "Android SDK Path", self.android_sdk_path.display().to_string().bright_white()); println!(); } } \ No newline at end of file diff --git a/src/project/mod.rs b/src/project/mod.rs index 00a6475..6d2acd7 100644 --- a/src/project/mod.rs +++ b/src/project/mod.rs @@ -77,7 +77,7 @@ impl ProjectBuilder { fn create_project_files(&self, project_path: &Path, sdk_config: &SdkConfig) -> Result<()> { // Create .weevil.toml config - let project_config = ProjectConfig::new(&self.name, sdk_config.ftc_sdk_path.clone())?; + let project_config = ProjectConfig::new(&self.name, sdk_config.ftc_sdk_path.clone(), sdk_config.android_sdk_path.clone())?; project_config.save(project_path)?; // README.md @@ -334,47 +334,56 @@ echo "✓ Deployed!" let deploy_bat = r#"@echo off setlocal enabledelayedexpansion -REM Read SDK path from config -for /f "tokens=2 delims==" %%a in ('findstr /c:"ftc_sdk_path" .weevil.toml') do ( - set SDK_DIR=%%a -) +REM Read SDK paths from config +for /f "tokens=2 delims==" %%a in ('findstr /c:"ftc_sdk_path" .weevil.toml') do set SDK_DIR=%%a +for /f "tokens=2 delims==" %%a in ('findstr /c:"android_sdk_path" .weevil.toml') do set ANDROID_SDK=%%a REM Strip all quotes (both single and double) set SDK_DIR=%SDK_DIR:"=% set SDK_DIR=%SDK_DIR:'=% set SDK_DIR=%SDK_DIR: =% +set ANDROID_SDK=%ANDROID_SDK:"=% +set ANDROID_SDK=%ANDROID_SDK:'=% +set ANDROID_SDK=%ANDROID_SDK: =% if not defined SDK_DIR ( echo Error: Could not read FTC SDK path from .weevil.toml exit /b 1 ) +if not defined ANDROID_SDK ( + echo Error: Could not read Android SDK path from .weevil.toml + exit /b 1 +) + +REM Set ADB path +set ADB_PATH=%ANDROID_SDK%\platform-tools\adb.exe + echo Building APK... call gradlew.bat buildApk echo. echo Deploying to Control Hub... -echo. -echo DEBUG: SDK_DIR = %SDK_DIR% -echo DEBUG: Searching for: %SDK_DIR%\TeamCode-debug.apk -echo. REM Find APK - look for TeamCode-debug.apk for /f "delims=" %%i in ('dir /s /b "%SDK_DIR%\TeamCode-debug.apk" 2^>nul') do set APK=%%i if not defined APK ( echo Error: APK not found - echo. - echo DEBUG: Tried searching in: %SDK_DIR% - echo DEBUG: Let's see what APKs exist: - dir /s /b "%SDK_DIR%\*.apk" 2>nul - echo. exit /b 1 ) echo Found APK: %APK% + +REM Check for adb +if not exist "%ADB_PATH%" ( + echo Error: adb not found at %ADB_PATH% + echo Run: weevil sdk install + exit /b 1 +) + echo Installing: %APK% -adb install -r "%APK%" +"%ADB_PATH%" install -r "%APK%" echo. echo Deployed!