use std::env;
use std::path::Path;
use std::process::Command;
use std::fs;
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let frontend_path = Path::new("frontend");
let dist_path = frontend_path.join("dist");
if frontend_path.exists() {
fs::create_dir_all(Path::new(&out_dir).join("frontend/dist")).expect("Failed to create dist directory");
if !dist_path.exists() || fs::read_dir(&dist_path).unwrap().next().is_none() {
println!("cargo:warning=Building frontend...");
let status = Command::new("yarn")
.current_dir(frontend_path)
.arg("install")
.status()
.expect("Failed to run yarn install");
if !status.success() {
panic!("Yarn install failed");
}
let status = Command::new("yarn")
.current_dir(frontend_path)
.arg("build")
.status()
.expect("Failed to run yarn build");
if !status.success() {
panic!("Yarn build failed");
}
}
}
println!("cargo:rerun-if-changed=frontend/src/*");
println!("cargo:rerun-if-changed=frontend/public/*");
println!("cargo:rerun-if-changed=frontend/index.html");
println!("cargo:rerun-if-changed=frontend/package.json");
}