fn main() -> std::io::Result<()> {
if std::env::var_os("CARGO_FEATURE_GRPC").is_none() {
return Ok(());
}
println!("cargo:rerun-if-changed=proto/dtmrs.proto");
println!("cargo:rerun-if-changed=proto/busi.proto");
println!("cargo:rerun-if-env-changed=PROTOC");
if std::env::var_os("PROTOC").is_none() && which_protoc().is_none() {
if let Ok(p) = protoc_bin_vendored::protoc_bin_path() {
std::env::set_var("PROTOC", p);
}
}
tonic_prost_build::configure()
.build_server(true)
.build_client(true)
.compile_protos(&["proto/dtmrs.proto", "proto/busi.proto"], &["proto"])
}
fn which_protoc() -> Option<std::path::PathBuf> {
let path = std::env::var_os("PATH")?;
std::env::split_paths(&path)
.map(|dir| dir.join("protoc"))
.find(|p| p.is_file())
}