heddle-api 0.2.5

Generated transport-neutral Rust types for the Heddle public API
Documentation
// SPDX-License-Identifier: Apache-2.0
use std::{env, fs, path::PathBuf};

#[path = "build_support/method_generation.rs"]
mod method_generation;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let protoc = protoc_bin_vendored::protoc_bin_path()?;
    unsafe { env::set_var("PROTOC", protoc) };

    let root = PathBuf::from(env::var("CARGO_MANIFEST_DIR")?);
    let proto_root = root.join("proto");
    let package_root = proto_root.join("heddle/api/v1alpha1");
    let mut protos = fs::read_dir(&package_root)?
        .filter_map(Result::ok)
        .map(|entry| entry.path())
        .filter(|path| {
            path.extension()
                .is_some_and(|extension| extension == "proto")
        })
        .collect::<Vec<_>>();
    protos.sort();

    let output = PathBuf::from(env::var("OUT_DIR")?);
    let descriptor = output.join("heddle_api_descriptor.bin");
    println!("cargo:rerun-if-changed={}", package_root.display());

    let mut config = prost_build::Config::new();
    config
        .boxed(".heddle.api.v1alpha1.PushClientFrame.frame.request")
        .boxed(".heddle.api.v1alpha1.BootstrapOwnerRootRequest.approval.deferred_human")
        .file_descriptor_set_path(&descriptor)
        .compile_protos(&protos, &[proto_root])?;
    method_generation::write(&descriptor, &output.join("heddle_api_methods.rs"))?;
    Ok(())
}