fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("cargo:rerun-if-changed=proto/storage.proto");
println!("cargo:rerun-if-changed=proto/build.proto");
println!("cargo:rerun-if-changed=proto/artifact_registry.proto");
println!("cargo:rerun-if-changed=proto/vault.proto");
println!("cargo:rerun-if-changed=proto/kv.proto");
println!("cargo:rerun-if-changed=proto/queue.proto");
println!("cargo:rerun-if-changed=proto/function.proto");
println!("cargo:rerun-if-changed=proto/container.proto");
println!("cargo:rerun-if-changed=proto/service_account.proto");
println!("cargo:rerun-if-changed=proto/wait_until.proto");
println!("cargo:rerun-if-changed=proto/control.proto");
let out_dir = std::path::PathBuf::from(std::env::var("OUT_DIR").unwrap());
#[cfg(feature = "grpc")]
{
compile_protos(&out_dir)?;
}
#[cfg(not(feature = "grpc"))]
{
println!("cargo:warning=Skipping protobuf compilation (grpc feature not enabled)");
}
Ok(())
}
#[cfg(feature = "grpc")]
fn compile_protos(out_dir: &std::path::PathBuf) -> Result<(), Box<dyn std::error::Error>> {
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.storage_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/storage.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.build_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/build.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.artifact_registry_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/artifact_registry.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.vault_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/vault.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.kv_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/kv.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.queue_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/queue.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.function_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/function.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.container_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/container.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.service_account_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/service_account.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.wait_until_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/wait_until.proto"], &["proto/"])?;
tonic_build::configure()
.build_server(cfg!(feature = "grpc"))
.build_client(cfg!(feature = "grpc"))
.file_descriptor_set_path(out_dir.join("alien_bindings.control_descriptor.bin"))
.type_attribute(
".",
"#[allow(clippy::doc_lazy_continuation, clippy::enum_variant_names)]",
)
.compile_protos(&["proto/control.proto"], &["proto/"])?;
Ok(())
}