Files
games/crates/apps/game-snake-poc-tauri/build.rs

43 lines
1.7 KiB
Rust

// 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;
}