use std::env; use std::path::PathBuf; fn main() -> Result<(), Box> { let protos = [ "proto/osm/fileformat.proto", "proto/osm/osmformat.proto", "proto/mvt/mvt.proto", ]; let includes = ["proto"]; let mut cfg = prost_build::Config::new(); cfg.bytes(["."]); if let Err(e) = cfg .protoc_arg("--experimental_allow_proto3_optional") .compile_protos(&protos, &includes) { eprintln!("Failed to build. {}", e); cfg.compile_protos(&protos, &includes)? } let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); if let Err(e) = tonic_build::configure() .file_descriptor_set_path(out_dir.join("aaru_descriptor.bin")) .protoc_arg("--experimental_allow_proto3_optional") .compile_protos(&["proto/aaru/v1/aaru.proto"], &["proto"]) { eprintln!("Failed to build. {}", e); tonic_build::configure() .file_descriptor_set_path(out_dir.join("aaru_descriptor.bin")) .compile_protos(&["proto/aaru/v1/aaru.proto"], &["proto"])? } Ok(()) }