use std::path::PathBuf;
use std::process::Command;
fn main() {
println!("cargo::rustc-check-cfg=cfg(has_app_icon)");
let browser_enabled = std::env::var("CARGO_FEATURE_BROWSER").is_ok();
if browser_enabled {
let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
let html_src = manifest_dir.join("assets/browser-index.html");
let html_dst = out_dir.join("browser-index.html");
println!("cargo:rerun-if-changed=assets/browser-index.html");
assert!(
html_src.exists(),
"assets/browser-index.html not found — this is a packaging error. \
Please report it at https://github.com/d33p0st/toolkit-zero/issues"
);
std::fs::copy(&html_src, &html_dst)
.expect("failed to copy assets/browser-index.html to OUT_DIR");
let icon_src = manifest_dir.join("assets/app-icon.png");
println!("cargo:rerun-if-changed=assets/app-icon.png");
if icon_src.exists() {
let icon_dst = out_dir.join("app-icon.png");
std::fs::copy(&icon_src, &icon_dst)
.expect("failed to copy assets/app-icon.png to OUT_DIR");
println!("cargo:rustc-cfg=has_app_icon");
}
}
let location_enabled = std::env::var("CARGO_FEATURE_LOCATION").is_ok()
|| std::env::var("CARGO_FEATURE_LOCATION_BROWSER").is_ok();
if !location_enabled {
return;
}
let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let chacha20poly1305_wasm_dir = manifest_dir.join("chacha20poly1305-wasm");
let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
let wasm_dst = out_dir.join("chacha20poly1305.wasm");
if chacha20poly1305_wasm_dir.join("Cargo.toml").exists() {
println!("cargo:rerun-if-changed=chacha20poly1305-wasm/src/lib.rs");
println!("cargo:rerun-if-changed=chacha20poly1305-wasm/Cargo.toml");
let cargo = std::env::var("CARGO").unwrap_or_else(|_| "cargo".to_string());
let status = Command::new(&cargo)
.args([
"build",
"--manifest-path", chacha20poly1305_wasm_dir.join("Cargo.toml").to_str().unwrap(),
"--target", "wasm32-unknown-unknown",
"--release",
"--quiet",
])
.env_remove("CARGO_ENCODED_RUSTFLAGS")
.env_remove("RUSTFLAGS")
.status()
.expect("failed to invoke cargo for chacha20poly1305-wasm");
assert!(
status.success(),
"chacha20poly1305-wasm WASM compilation failed.\n\
Tip: make sure the wasm32-unknown-unknown target is installed:\n\
rustup target add wasm32-unknown-unknown"
);
let wasm_src = chacha20poly1305_wasm_dir
.join("target/wasm32-unknown-unknown/release/chacha20poly1305_wasm.wasm");
std::fs::copy(&wasm_src, &wasm_dst)
.expect("failed to copy chacha20poly1305.wasm to OUT_DIR");
} else {
println!("cargo:rerun-if-changed=assets/chacha20poly1305.wasm");
let prebuilt = manifest_dir.join("assets/chacha20poly1305.wasm");
assert!(
prebuilt.exists(),
"assets/chacha20poly1305.wasm not found — this is a packaging error. \
Please report it at https://github.com/d33p0st/toolkit-zero/issues"
);
std::fs::copy(&prebuilt, &wasm_dst)
.expect("failed to copy assets/chacha20poly1305.wasm to OUT_DIR");
}
}