fix: keep build artifacts on Android lib and plugins (#6229)

This commit is contained in:
Lucas Fernandes Nogueira
2023-02-09 08:11:31 -08:00
committed by GitHub
parent f2da21c7b4
commit 78176edf4a
2 changed files with 38 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
use std::{
env::var,
fs,
fs::{self, rename},
path::{PathBuf, MAIN_SEPARATOR},
};
@@ -46,7 +46,19 @@ impl PluginBuilder {
println!("cargo:rerun-if-changed={}", gradle_settings_path);
println!("cargo:rerun-if-changed={}", app_build_gradle_path);
let target = PathBuf::from(out_dir).join(&pkg_name);
let out_dir = PathBuf::from(out_dir);
let target = out_dir.join(&pkg_name);
// keep build folder if it exists
let build_path = target.join("build");
let out_dir = if build_path.exists() {
let out_dir = out_dir.join(".tauri-plugin-build");
rename(&build_path, &out_dir)?;
Some(out_dir)
} else {
None
};
let _ = fs::remove_dir_all(&target);
for entry in walkdir::WalkDir::new(&source) {
@@ -60,6 +72,10 @@ impl PluginBuilder {
}
}
if let Some(out_dir) = out_dir {
rename(&out_dir, &build_path)?;
}
let gradle_settings = fs::read_to_string(&gradle_settings_path)?;
let include = format!(
"include ':{pkg_name}'

View File

@@ -25,7 +25,7 @@ use std::{
env::{set_var, temp_dir},
ffi::OsString,
fmt::Write,
fs::{create_dir_all, read_to_string, remove_dir_all, write},
fs::{create_dir_all, read_to_string, remove_dir_all, rename, write},
net::SocketAddr,
path::PathBuf,
process::ExitStatus,
@@ -318,14 +318,30 @@ fn ensure_init(project_dir: PathBuf, target: Target) -> Result<()> {
#[allow(irrefutable_let_patterns)]
if let Target::Android = target {
let tauri_api_dir_path = project_dir.join("tauri-api");
if tauri_api_dir_path.exists() {
let build_path = if tauri_api_dir_path.exists() {
// keep build folder if it exists
let build_path = tauri_api_dir_path.join("build");
let out_dir = if build_path.exists() {
let out_dir = project_dir.join(".tauri-api-build");
rename(&build_path, &out_dir)?;
Some(out_dir)
} else {
None
};
remove_dir_all(&tauri_api_dir_path)?;
}
out_dir
} else {
None
};
create_dir_all(&tauri_api_dir_path)?;
ANDROID_API_PROJECT_DIR
.extract(tauri_api_dir_path)
.extract(&tauri_api_dir_path)
.context("failed to extract Tauri API project")?;
if let Some(build_path) = build_path {
rename(build_path, tauri_api_dir_path.join("build"))?;
}
}
Ok(())