2026-02-16 17:05:09 +00:00
|
|
|
use std::env;
|
2026-02-13 12:31:36 +00:00
|
|
|
use std::path::Path;
|
2026-02-16 17:05:09 +00:00
|
|
|
use std::process::Command;
|
2026-02-13 12:31:36 +00:00
|
|
|
|
2026-02-16 17:05:09 +00:00
|
|
|
fn run(cmd: &str, args: &[&str], dir: &Path) {
|
|
|
|
|
let status = Command::new(cmd)
|
|
|
|
|
.args(args)
|
|
|
|
|
.current_dir(dir)
|
|
|
|
|
.status()
|
|
|
|
|
.unwrap_or_else(|e| panic!("Failed to run {} {:?}: {}", cmd, args, e));
|
|
|
|
|
|
|
|
|
|
if !status.success() {
|
|
|
|
|
panic!("Command failed: {} {:?}", cmd, args);
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-02-13 12:31:36 +00:00
|
|
|
|
2026-02-16 17:05:09 +00:00
|
|
|
fn main() {
|
2026-02-13 12:31:36 +00:00
|
|
|
println!("cargo:rerun-if-changed=build.rs");
|
2026-02-16 17:05:09 +00:00
|
|
|
println!("cargo:rerun-if-env-changed=PROFILE");
|
|
|
|
|
println!("cargo:rerun-if-changed=../frontend/package.json");
|
|
|
|
|
println!("cargo:rerun-if-changed=../frontend/pnpm-lock.yaml");
|
|
|
|
|
println!("cargo:rerun-if-changed=../frontend/vite.config.ts");
|
|
|
|
|
println!("cargo:rerun-if-changed=../frontend/index.html");
|
|
|
|
|
println!("cargo:rerun-if-changed=../frontend/src");
|
|
|
|
|
println!("cargo:rerun-if-changed=../frontend/public");
|
2026-02-13 12:31:36 +00:00
|
|
|
|
2026-02-16 17:05:09 +00:00
|
|
|
let profile = env::var("PROFILE").unwrap_or_default();
|
|
|
|
|
if profile != "release" {
|
|
|
|
|
return;
|
2026-02-13 12:31:36 +00:00
|
|
|
}
|
2026-02-16 17:05:09 +00:00
|
|
|
|
|
|
|
|
let frontend_dir = Path::new("../frontend");
|
|
|
|
|
|
|
|
|
|
// Ensure dependencies are installed and build the frontend bundle.
|
|
|
|
|
run("pnpm", &["install"], frontend_dir);
|
|
|
|
|
run("pnpm", &["build"], frontend_dir);
|
2026-02-13 12:31:36 +00:00
|
|
|
}
|