44 lines
1.4 KiB
Rust
44 lines
1.4 KiB
Rust
use std::path::Path;
|
|
use std::process::Command;
|
|
|
|
fn main() {
|
|
#[cfg(feature = "webui")]
|
|
{
|
|
let webui_dir = Path::new("webui");
|
|
let webui_src_dir = webui_dir.join("src");
|
|
|
|
println!("cargo:rerun-if-changed={}", webui_src_dir.to_str().unwrap());
|
|
|
|
// Run "npm install && npm run build" in the webui directory
|
|
for (cmd, args) in [
|
|
("npm", ["install"].as_slice()),
|
|
("npm", ["run", "build"].as_slice()),
|
|
] {
|
|
// Run "npm install" in the webui directory
|
|
let output = Command::new(cmd)
|
|
.args(args)
|
|
.current_dir(webui_dir)
|
|
.output()
|
|
.unwrap_or_else(|_| {
|
|
panic!(
|
|
"Failed to execute {} {} in {:?}",
|
|
cmd,
|
|
args.join(" "),
|
|
webui_dir
|
|
)
|
|
});
|
|
|
|
if !output.status.success() {
|
|
panic!(
|
|
"{} {} failed with output: {}",
|
|
cmd,
|
|
args.join(" "),
|
|
String::from_utf8_lossy(&output.stderr)
|
|
);
|
|
}
|
|
|
|
// Optionally print the stdout output if you want to see the build logs
|
|
println!("{}", String::from_utf8_lossy(&output.stdout));
|
|
}
|
|
}
|
|
}
|