rqbit/crates/librqbit/build.rs
Igor Katson 37ee8b70ba
Split up librqbit http_api and tracing_subscriber into separate features (#188)
* fix lints that were under features

* Split up some features and fix desktop

* fix github script

* fix github script

* fix github script

* try caching check-desktop
2024-08-15 18:54:59 +01:00

48 lines
1.4 KiB
Rust

use anyhow::{bail, Context};
use std::path::Path;
use std::process::Command;
#[allow(dead_code)]
fn run_cmd(cwd: &Path, cmd: &str) -> anyhow::Result<()> {
#[cfg(target_os = "windows")]
let (shell, shell_args) = ("powershell", ["-command"].as_slice());
#[cfg(not(target_os = "windows"))]
let (shell, shell_args) = ("bash", ["-c"].as_slice());
// Run "npm install" in the webui directory
let output = Command::new(shell)
.args(shell_args)
.arg(cmd)
.current_dir(cwd)
.output()
.with_context(|| format!("Failed to execute {} in {:?}", cmd, cwd))?;
if !output.status.success() {
bail!(
"\"{}\" failed\n\nstderr: {}\n\nstdout: {}",
cmd,
String::from_utf8_lossy(&output.stderr),
String::from_utf8_lossy(&output.stdout)
);
}
// Optionally print the stdout output if you want to see the build logs
println!("{}", String::from_utf8_lossy(&output.stdout));
Ok(())
}
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 in ["npm install", "npm run build"] {
run_cmd(webui_dir, cmd).unwrap();
}
}
}