use std::process::Command;
fn main() {
println!("cargo:rerun-if-changed=dashboard/src");
println!("cargo:rerun-if-changed=dashboard/index.html");
println!("cargo:rerun-if-changed=dashboard/package.json");
if std::env::var("CARGO_PRIMARY_PACKAGE").is_err() {
return;
}
let dashboard_dir = std::path::Path::new("dashboard");
if !dashboard_dir.exists() {
println!("cargo:warning=Dashboard directory not found, skipping build");
return;
}
let node_modules = dashboard_dir.join("node_modules");
if !node_modules.exists() {
let _ = Command::new("npm")
.arg("install")
.current_dir(dashboard_dir)
.status();
}
let status = Command::new("npm")
.args(["run", "build"])
.current_dir(dashboard_dir)
.status();
match status {
Ok(s) if s.success() => {
println!("cargo:warning=Dashboard built successfully");
}
Ok(_) => {
println!("cargo:warning=Dashboard build failed, using existing dist/");
}
Err(_) => {
println!("cargo:warning=npm not found, using existing dist/");
}
}
}