Rustelo/client/build.rs

67 lines
2.2 KiB
Rust
Raw Normal View History

2025-07-07 23:05:46 +01:00
use std::{
io::{self, Write},
path::Path,
process,
};
fn main() {
println!("cargo::rustc-check-cfg=cfg(web_sys_unstable_apis)");
println!("cargo:rerun-if-changed=uno.config.ts");
//println!("cargo:rerun-if-changed=style/main.scss");
// Check if node_modules exists in various locations, if not run pnpm install
let node_modules_paths = ["../node_modules", "node_modules", "../../node_modules"];
let node_modules_exists = node_modules_paths
.iter()
.any(|path| Path::new(path).exists());
if !node_modules_exists {
println!("cargo:warning=node_modules not found, running pnpm install...");
// Try to find package.json to determine correct directory
let package_json_paths = ["../package.json", "package.json", "../../package.json"];
let install_dir = package_json_paths
.iter()
.find(|path| Path::new(path).exists())
.map(|path| Path::new(path).parent().unwrap_or(Path::new(".")))
.unwrap_or(Path::new(".."));
match process::Command::new("pnpm")
.arg("install")
.current_dir(install_dir)
.output()
{
Ok(output) => {
if !output.status.success() {
let _ = io::stdout().write_all(&output.stdout);
let _ = io::stdout().write_all(&output.stderr);
panic!("pnpm install failed");
}
println!("cargo:warning=pnpm install completed successfully");
}
Err(e) => {
println!("cargo:warning=Failed to run pnpm install: {:?}", e);
println!("cargo:warning=Please run 'pnpm install' manually in the project root");
// Don't panic here, just warn - the build might still work
}
}
}
match process::Command::new("sh")
.arg("-c")
.arg("pnpm run build")
.output()
{
Ok(output) => {
if !output.status.success() {
let _ = io::stdout().write_all(&output.stdout);
let _ = io::stdout().write_all(&output.stderr);
panic!("UnoCSS error");
}
}
Err(e) => panic!("UnoCSS error: {:?}", e),
};
}