41 lines
1.1 KiB
Rust
41 lines
1.1 KiB
Rust
use std::path::PathBuf;
|
|
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
// Use local proto/ dir (included in crate package).
|
|
// Falls back to the monorepo contracts/ dir for workspace dev builds.
|
|
let local_dir = PathBuf::from("proto");
|
|
let monorepo_dir: PathBuf = [".", "..", "..", "..", "..", "contracts", "proto"]
|
|
.iter()
|
|
.collect();
|
|
|
|
let proto_dir = if local_dir.exists() {
|
|
local_dir
|
|
} else {
|
|
monorepo_dir
|
|
};
|
|
|
|
let protos = [
|
|
"common.proto",
|
|
"agent.proto",
|
|
"bot.proto",
|
|
"human_simulator.proto",
|
|
"output.proto",
|
|
"events.proto",
|
|
];
|
|
|
|
let proto_files: Vec<PathBuf> = protos.iter().map(|p| proto_dir.join(p)).collect();
|
|
|
|
tonic_build::configure()
|
|
.build_server(true)
|
|
.build_client(true)
|
|
.compile_protos(&proto_files, &[&proto_dir])?;
|
|
|
|
// Re-run if any proto file changes
|
|
println!("cargo:rerun-if-changed={}", proto_dir.display());
|
|
for f in &proto_files {
|
|
println!("cargo:rerun-if-changed={}", f.display());
|
|
}
|
|
|
|
Ok(())
|
|
}
|