use std::path::PathBuf;
use std::process::Command;
fn main() {
println!("cargo:rerun-if-changed=templates");
println!("cargo:rerun-if-changed=css/input.css");
println!("cargo:rerun-if-changed=css/tailwind.config.js");
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| ".".to_string());
let css_dir = PathBuf::from(&manifest_dir).join("css");
let out_css = PathBuf::from(&manifest_dir).join("src/assets/admin.css");
if !css_dir.join("node_modules").exists() {
println!(
"cargo:warning=umbral-admin: Tailwind CSS not built (node_modules missing). \
Run `cd plugins/umbral-admin/css && npm install && npm run build` for production CSS. \
Development uses the Tailwind CDN."
);
return;
}
let status = Command::new("npx")
.arg("tailwindcss")
.arg("-c")
.arg("tailwind.config.js")
.arg("-i")
.arg("input.css")
.arg("-o")
.arg(&out_css)
.arg("--minify")
.current_dir(&css_dir)
.status();
match status {
Ok(s) if s.success() => {
println!("umbral-admin: Tailwind CSS built successfully.");
}
Ok(s) => {
println!(
"cargo:warning=umbral-admin: Tailwind CSS build exited with status {s}. \
Using CDN fallback in dev."
);
}
Err(e) => {
println!(
"cargo:warning=umbral-admin: Tailwind CSS build failed ({e}). \
Using CDN fallback in dev."
);
}
}
}