67 lines
2.2 KiB
Rust
67 lines
2.2 KiB
Rust
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),
|
|
};
|
|
}
|