use std::{path::PathBuf, process::Stdio};
use crate::manifest::Entrypoint;
pub fn build(cwd: &PathBuf, target_dir: &PathBuf, name: &str, entrypoint: &Entrypoint) -> PathBuf {
let release = true;
println!("Building {name}...");
let release_arg: &[&str] = if release { &["--release"] } else { &[] };
let result = std::process::Command::new("cargo")
.args([
"zigbuild",
"--target",
"x86_64-unknown-linux-musl",
"-p",
&entrypoint._crate,
"--bin",
name,
])
.args(release_arg)
.current_dir(cwd)
.stderr(Stdio::inherit())
.stdout(Stdio::inherit())
.output()
.expect("failed to execute build Rust");
if !result.status.success() {
panic!("failed to build Rust");
}
let path = target_dir.join("x86_64-unknown-linux-musl");
if release {
path.join("release")
} else {
path.join("debug")
}
.join(&name)
}