1pub fn generate_bindings<P>(
2 bragi_source_path: P,
3 output_file_name: &str,
4) -> Result<(), Box<dyn std::error::Error>>
5where
6 P: AsRef<std::path::Path>,
7{
8 let out_dir = std::env::var("OUT_DIR")?;
9 let out_path = std::path::PathBuf::from(out_dir).join(output_file_name);
10
11 let output = std::process::Command::new("bragi")
13 .arg("-o")
14 .arg(out_path.to_str().unwrap())
15 .arg(bragi_source_path.as_ref())
16 .arg("rust")
17 .output()?;
18
19 if output.status.success() {
20 println!(
22 "cargo::rerun-if-changed={}",
23 bragi_source_path.as_ref().display()
24 );
25
26 Ok(())
27 } else {
28 let stderr = String::from_utf8_lossy(&output.stderr);
29 let stdout = String::from_utf8_lossy(&output.stdout);
30
31 Err(format!("Bragi compiler failed:\n{}\n{}", stderr, stdout).into())
32 }
33}