// file: crates/apps/game-snake-poc-tauri/build.rs // version: 2 //! Build-time integration for the Snake Tauri host. const GENERATED_ANDROID_TAURI_BUILD_GRADLE: &str = "gen/android/app/tauri.build.gradle.kts"; const GRADLE_8_IMPLEMENTATION_DECLARATION: &str = "val implementation by configurations"; const GRADLE_9_IMPLEMENTATION_DECLARATION: &str = "val implementation = configurations.getByName(\"implementation\")"; fn patch_generated_android_gradle() { let manifest_dir = match std::env::var_os("CARGO_MANIFEST_DIR") { Some(value) => std::path::PathBuf::from(value), None => return, }; let path = manifest_dir.join(GENERATED_ANDROID_TAURI_BUILD_GRADLE); let content = match std::fs::read_to_string(&path) { std::result::Result::Ok(value) => value, std::result::Result::Err(error) if error.kind() == std::io::ErrorKind::NotFound => return, std::result::Result::Err(error) => { println!("cargo:warning=failed to inspect {}: {error}", path.display()); return; }, }; if content.contains(GRADLE_9_IMPLEMENTATION_DECLARATION) { return; } if !content.contains(GRADLE_8_IMPLEMENTATION_DECLARATION) { println!("cargo:warning={} does not match the expected Tauri 2.11.x Gradle bridge", path.display()); return; } let patched = content.replace(GRADLE_8_IMPLEMENTATION_DECLARATION, GRADLE_9_IMPLEMENTATION_DECLARATION); if let std::result::Result::Err(error) = std::fs::write(&path, patched) { println!("cargo:warning=failed to prepare {} for Gradle 9: {error}", path.display()); } return; } fn main() { tauri_build::build(); patch_generated_android_gradle(); return; }