switchboard-protos 0.2.1

Protobuf definitions for Switchboard oracle job schemas
Documentation
use std::{env, fs, path::PathBuf};

fn main() {
    // Use vendored protoc (mac/CI friendly)
    let protoc = protoc_bin_vendored::protoc_bin_path().unwrap();
    env::set_var("PROTOC", protoc);

    let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
    let proto_files = &["job_schemas.proto"];
    let includes = &["."];

    // 1) Have prost emit a descriptor set we can feed to pbjson
    let fds_path = out_dir.join("oracle_job.fds.bin");
    let mut cfg = prost_build::Config::new();
    cfg.file_descriptor_set_path(&fds_path);
    cfg.compile_protos(proto_files, includes).unwrap();

    // 2) Read the descriptor bytes and register with pbjson
    let fds_bytes = fs::read(&fds_path).unwrap();
    let mut builder = pbjson_build::Builder::new();
    builder.register_descriptors(&fds_bytes).unwrap(); // <— bytes, not &str
    builder.ignore_unknown_fields();                    // Ignore unknown fields during deserialization
    builder.build(&[".oracle_job"]).unwrap();           // package(s) to generate serde for
}