use bindgen::Builder;
use bindgen::EnumVariation;
use std::env;
use std::path::PathBuf;
trait ExtendedBuilder {
    fn set_experimental(self) -> Self;
    fn set_napi_version(self) -> Self;
}
impl ExtendedBuilder for Builder {
    fn set_experimental(self) -> Builder {
        if cfg!(feature = "experimental") {
            self.clang_arg("-D NAPI_EXPERIMENTAL")
        } else {
            self
        }
    }
    fn set_napi_version(self) -> Builder {
        if cfg!(feature = "napi_v6") {
            self.clang_arg("-D NAPI_VERSION=6")
        } else if cfg!(feature = "napi_v5") {
            self.clang_arg("-D NAPI_VERSION=5")
        } else {
            self
        }
    }
}
fn main() {
            let bindings = bindgen::Builder::default()
        .set_experimental()
        .set_napi_version()
        .header("node/src/node_api.h")
        .whitelist_function("napi_.*")
        .whitelist_type("napi_.*")
        .default_enum_style(EnumVariation::Rust {
            non_exhaustive: false,
        })
        .generate()
        .expect("Unable to generate bindings");
        let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
    bindings
        .write_to_file(out_path.join("bindings.rs"))
        .expect("Couldn't write bindings!");
}