|
1 | | -use std::io::Error; |
| 1 | +use glob::glob; |
| 2 | +use std::{env, io::Result, path::PathBuf}; |
| 3 | + |
| 4 | +fn main() -> Result<()> { |
| 5 | + let proto_root = PathBuf::from("src/proto/opentelemetry-proto"); |
| 6 | + let include_path = proto_root.clone(); |
| 7 | + |
| 8 | + let proto_paths: Vec<_> = glob(&format!("{}/**/*.proto", proto_root.display())) |
| 9 | + .expect("Failed to read glob pattern") |
| 10 | + .filter_map(|result| result.ok()) |
| 11 | + .collect(); |
| 12 | + |
| 13 | + // Set up re-run triggers |
| 14 | + for proto in &proto_paths { |
| 15 | + println!("cargo:rerun-if-changed={}", proto.display()); |
| 16 | + } |
| 17 | + |
| 18 | + let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); |
| 19 | + let descriptor_path = out_dir.join("opentelemetry-proto.desc"); |
2 | 20 |
|
3 | | -fn main() -> Result<(), Error> { |
4 | 21 | tonic_build::configure() |
5 | 22 | .build_client(true) |
6 | 23 | .build_server(true) |
7 | | - .compile( |
8 | | - &[ |
9 | | - "src/proto/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto", |
10 | | - "src/proto/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto", |
11 | | - "src/proto/opentelemetry-proto/opentelemetry/proto/logs/v1/logs.proto", |
12 | | - "src/proto/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto", |
13 | | - "src/proto/opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto", |
14 | | - "src/proto/opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto", |
15 | | - "src/proto/opentelemetry-proto/opentelemetry/proto/collector/logs/v1/logs_service.proto", |
16 | | - "src/proto/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto", |
17 | | - ], |
18 | | - &["src/proto/opentelemetry-proto"], |
19 | | - )?; |
| 24 | + .file_descriptor_set_path(&descriptor_path) |
| 25 | + .compile(&proto_paths, &[include_path])?; |
20 | 26 |
|
21 | 27 | Ok(()) |
22 | 28 | } |
0 commit comments