use std::fs;
use std::path::Path;
fn main() {
println!("cargo:rustc-check-cfg=cfg(has_bundled_cert)");
let cert = "assets/aws.qaidvoid.dev/cert.pem";
let key = "assets/aws.qaidvoid.dev/key.pem";
println!("cargo:rerun-if-changed={cert}");
println!("cargo:rerun-if-changed={key}");
if Path::new(cert).exists() && Path::new(key).exists() {
println!("cargo:rustc-cfg=has_bundled_cert");
}
stage_ui_build();
}
fn stage_ui_build() {
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR");
let out_dir = std::env::var("OUT_DIR").expect("OUT_DIR");
let src = Path::new(&manifest_dir).join("../../ui/build");
let dst = Path::new(&out_dir).join("ui-build");
if dst.exists() {
fs::remove_dir_all(&dst).expect("clear ui-build staging dir");
}
fs::create_dir_all(&dst).expect("create ui-build staging dir");
if src.exists() {
println!("cargo:rerun-if-changed={}", src.display());
copy_dir_recursive(&src, &dst).expect("copy ui/build into OUT_DIR");
}
}
fn copy_dir_recursive(src: &Path, dst: &Path) -> std::io::Result<()> {
fs::create_dir_all(dst)?;
for entry in fs::read_dir(src)? {
let entry = entry?;
let file_type = entry.file_type()?;
let from = entry.path();
let to = dst.join(entry.file_name());
if file_type.is_dir() {
copy_dir_recursive(&from, &to)?;
} else {
fs::copy(&from, &to)?;
}
}
Ok(())
}