Files
archived-tauri/core/tauri-build/src/mobile.rs
2024-03-01 08:29:01 -03:00

61 lines
2.1 KiB
Rust

// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
use std::{fs::write, path::PathBuf};
use anyhow::{Context, Result};
pub fn generate_gradle_files(project_dir: PathBuf) -> Result<()> {
let gradle_settings_path = project_dir.join("tauri.settings.gradle");
let app_build_gradle_path = project_dir.join("app").join("tauri.build.gradle.kts");
let mut gradle_settings =
"// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n".to_string();
let mut app_build_gradle = "// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
val implementation by configurations
dependencies {"
.to_string();
for (env, value) in std::env::vars_os() {
let env = env.to_string_lossy();
if env.starts_with("DEP_") && env.ends_with("_ANDROID_LIBRARY_PATH") {
let name_len = env.len() - "DEP_".len() - "_ANDROID_LIBRARY_PATH".len();
let mut plugin_name = env
.chars()
.skip("DEP_".len())
.take(name_len)
.collect::<String>()
.to_lowercase()
.replace('_', "-");
if plugin_name == "tauri" {
plugin_name = "tauri-android".into();
}
let plugin_path = PathBuf::from(value);
gradle_settings.push_str(&format!("include ':{plugin_name}'"));
gradle_settings.push('\n');
gradle_settings.push_str(&format!(
"project(':{plugin_name}').projectDir = new File({:?})",
tauri_utils::display_path(plugin_path)
));
gradle_settings.push('\n');
app_build_gradle.push('\n');
app_build_gradle.push_str(&format!(r#" implementation(project(":{plugin_name}"))"#));
}
}
app_build_gradle.push_str("\n}");
write(&gradle_settings_path, gradle_settings).context("failed to write tauri.settings.gradle")?;
write(&app_build_gradle_path, app_build_gradle)
.context("failed to write tauri.build.gradle.kts")?;
println!("cargo:rerun-if-changed={}", gradle_settings_path.display());
println!("cargo:rerun-if-changed={}", app_build_gradle_path.display());
Ok(())
}