crates/nornir-funnel-embed/build.rs
// build.rs — compile the trimmed `proto/funnel.proto` into a prost+tonic CLIENT
// (plus the server binding, so the `testkit` feature can stand up a mock `Funnel`
// gRPC server — mirroring nornir-warehouse-embed's build.rs).
//
// Pure-Rust codegen (the nordisk zero-shell charter): `protox` (a pure-Rust .proto
// parser) produces the FileDescriptorSet, then `tonic-build` emits the client
// bindings from it — no `protoc` binary, no C. Mirrors `nornir/build.rs`.
fn main() {
println!("cargo:rerun-if-changed=proto/funnel.proto");
println!("cargo:rerun-if-changed=build.rs");
let fds =
protox::compile(["proto/funnel.proto"], ["proto"]).expect("protox: compile funnel.proto");
tonic_prost_build::configure()
.build_server(true)
.build_client(true)
.compile_fds(fds)
.expect("tonic-build: codegen");
}