Files
2026-05-17 00:43:21 -07:00

37 lines
1.1 KiB
Rust

use std::env;
use std::process::Command;
use std::path::PathBuf;
fn main() {
let proto_file = "proto/interop.proto";
// 1. Generate prost/tonic code
tonic_build::compile_protos(proto_file).expect("Failed to compile protos with tonic-build");
// 2. Generate roto code
// Find protoc-gen-roto
// We assume it's in the target/debug folder of the root project
let root_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
let plugin_path = PathBuf::from(&root_dir)
.join("../")
.join("target/debug/protoc-gen-roto");
if !plugin_path.exists() {
println!("cargo:warning=protoc-gen-roto plugin not found at {:?}. Roto code generation will be skipped.", plugin_path);
return;
}
let out_dir = PathBuf::from(&root_dir).join("src/generated");
let status = Command::new("protoc")
.arg(format!("--plugin=protoc-gen-roto={}", plugin_path.to_str().unwrap()))
.arg(format!("--roto_out={}", out_dir.to_str().unwrap()))
.arg(proto_file)
.status()
.expect("Failed to execute protoc");
if !status.success() {
panic!("protoc failed to generate roto code");
}
}