43 lines
1.7 KiB
Rust
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;
|
|
}
|