use std::env;
use std::fs;
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let out_dir = env::var("OUT_DIR").unwrap();
let out_path = Path::new(&out_dir);
let proto_out_dir = out_path.join("proto");
fs::create_dir_all(&proto_out_dir)?;
let proto_files = &["safebrowsing_proto.proto"];
for proto_file in proto_files {
let proto_path = format!("src/{proto_file}");
if !Path::new(&proto_path).exists() {
let proto_content = match *proto_file {
"safebrowsing_proto.proto" => include_str!("src/safebrowsing_proto.proto"),
_ => panic!("Unknown proto file: {proto_file}"),
};
fs::write(proto_path, proto_content)?;
}
}
let mut config = prost_build::Config::new();
config.bytes(["."]);
config.bytes(["."]);
config.compile_protos(
&proto_files
.iter()
.map(|p| format!("src/{p}"))
.collect::<Vec<_>>(),
&["src"],
)?;
for proto_file in proto_files {
println!("cargo:rerun-if-changed=src/{proto_file}");
}
Ok(())
}