use anyhow::Result;
use std::env;
#[cfg(not(feature = "builtin-bindgen"))]
use anyhow::{bail, Context};
#[cfg(not(feature = "builtin-bindgen"))]
use std::process::Command;
pub fn generate_scaffolding(idl_file: &str) -> Result<()> {
println!("cargo:rerun-if-changed={}", idl_file);
let out_dir = env::var("OUT_DIR").map_err(|_| anyhow::anyhow!("$OUT_DIR missing?!"))?;
run_uniffi_bindgen_scaffolding(&out_dir, idl_file)
}
#[cfg(not(feature = "builtin-bindgen"))]
fn run_uniffi_bindgen_scaffolding(out_dir: &str, idl_file: &str) -> Result<()> {
let status = Command::new("uniffi-bindgen")
.args(&["scaffolding", "--out-dir", out_dir, idl_file])
.status()
.context("failed to run `uniffi-bindgen` - have you installed it via `cargo install uniffi_bindgen`?")?;
if !status.success() {
bail!("Error while generating scaffolding code");
}
Ok(())
}
#[cfg(feature = "builtin-bindgen")]
fn run_uniffi_bindgen_scaffolding(out_dir: &str, idl_file: &str) -> Result<()> {
uniffi_bindgen::generate_component_scaffolding(idl_file, None, Some(out_dir), None, true)
}