use std::{env, fs, io};
const PROTO_FILES: &[&str] = &[
"vendor/github.com/containerd/containerd/api/types/mount.proto",
"vendor/github.com/containerd/containerd/api/services/snapshots/v1/snapshots.proto",
];
const FIXUP_MODULES: &[&str] = &["containerd.services.snapshots.v1"];
fn main() {
tonic_build::configure()
.build_server(true)
.compile(PROTO_FILES, &["vendor/"])
.expect("Failed to generate GRPC bindings");
for module in FIXUP_MODULES {
fixup_imports(module).expect("Failed to fixup module");
}
}
fn fixup_imports(path: &str) -> Result<(), io::Error> {
let out_dir = env::var("OUT_DIR").unwrap();
let path = format!("{}/{}.rs", out_dir, path);
let contents =
fs::read_to_string(&path)?.replace("super::super::super::types", "crate::api::types");
fs::write(path, contents)?;
Ok(())
}