use std::env;
use std::path::PathBuf;
use prost::Message;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("cargo::rerun-if-changed=proto");
let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR")?);
let proto_dir = manifest_dir.join("proto");
let files = [
"primitives.proto",
"block_number.proto",
"account.proto",
"asset.proto",
"protocol_config.proto",
"note.proto",
"transaction.proto",
"block.proto",
"partial_blockchain.proto",
"transaction_inputs.proto",
"batch.proto",
];
let mut compiler = protox::Compiler::new([&proto_dir])?;
compiler.include_imports(true);
compiler.open_files(files.iter().map(|file| proto_dir.join(file)))?;
let descriptors = compiler.file_descriptor_set();
let out_dir = PathBuf::from(env::var("OUT_DIR")?);
std::fs::write(out_dir.join("miden_objects_descriptor.bin"), descriptors.encode_to_vec())?;
prost_build::Config::new().out_dir(out_dir).compile_fds(descriptors)?;
Ok(())
}