use std::env;
use std::path::Path;
fn main() {
let conjure_input =
Path::new("definitions/conjure/scout-service-api.conjure.json").to_path_buf();
let conjure_output = Path::new(&env::var_os("OUT_DIR").unwrap()).join("conjure");
let proto_input = Path::new("definitions/protos/").to_path_buf();
if !conjure_input.exists() {
panic!(
"\n===\nConjure definition file '{}' not found. Run `./gradlew :scout-service-api-rust:prepareNominalApis` to copy the file to the definitions directory.\n===\n",
conjure_input.display()
);
}
let proto_files = std::fs::read_dir(&proto_input)
.unwrap_or_else(|_| panic!("\n===\nFailed to read proto directory '{}'. Run `./gradlew :scout-service-api-rust:prepareNominalApis` to copy the files to the definitions directory.\n===\n", proto_input.display()))
.map(|entry| entry.unwrap().path())
.collect::<Vec<_>>();
if proto_files.is_empty() {
panic!(
"\n===\nNo proto files found in directory '{}'. Run `./gradlew :scout-service-api-rust:prepareNominalApis` to copy the files to the definitions directory.\n===\n",
proto_input.display()
);
}
println!("cargo:rerun-if-changed={}", proto_input.display());
println!("cargo:rerun-if-changed={}", conjure_input.display());
conjure_codegen::Config::new()
.strip_prefix("io.nominal".to_string())
.generate_files(conjure_input, conjure_output)
.unwrap();
prost_build::compile_protos(&proto_files, &[proto_input]).expect("Failed to compile protos");
}