fundamentum-edge-proto 1.6.0

Bindings to Fundamentum Edge Daemon's gRPC API
Documentation
use prost_wkt_build::*;
use std::{env, path::PathBuf};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let out_dir = PathBuf::from(env::var("OUT_DIR")?);
    let descriptor_file = out_dir.join("descriptor.bin");

    #[allow(unused_mut)]
    let mut builder = tonic_build::configure()
        .build_client(cfg!(feature = "client"))
        .build_server(cfg!(feature = "server"));

    #[cfg(feature = "reflection")]
    {
        builder = builder.file_descriptor_set_path(&descriptor_file);
    }

    builder
        .type_attribute(".", "#[derive(serde::Serialize,serde::Deserialize)]")
        .extern_path(".google.protobuf.Struct", "::prost_wkt_types::Struct")
        .extern_path(".google.protobuf.Timestamp", "::prost_wkt_types::Timestamp")
        .compile_protos(&["./proto/all.proto"], &["./proto"])?;

    let descriptor_bytes = std::fs::read(&descriptor_file)?;
    let descriptor = FileDescriptorSet::decode(&descriptor_bytes[..])?;
    prost_wkt_build::add_serde(out_dir, descriptor);

    Ok(())
}