crabka-protocol 0.3.0

Apache Kafka wire-protocol codec (4.3.0), with typed RecordBatch and zero-copy borrowed decode
Documentation
use std::fs;
use std::path::PathBuf;

fn main() {
    let root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));

    println!("cargo:rerun-if-changed=schemas/VERSION");
    println!("cargo:rerun-if-changed=generated");

    let schemas_version =
        fs::read_to_string(root.join("schemas/VERSION")).expect("schemas/VERSION must exist");
    let sha = schemas_version
        .lines()
        .find_map(|l| l.strip_prefix("sha: "))
        .expect("schemas/VERSION must contain a `sha:` line");

    let one = fs::read_to_string(root.join("generated/ApiVersionsRequest.owned.rs"))
        .expect("generated/ApiVersionsRequest.owned.rs must exist; run tools/regenerate.sh");
    assert!(
        one.contains(sha),
        "generated/ApiVersionsRequest.owned.rs was produced against a different schemas SHA \
         ({sha}). Run tools/regenerate.sh and commit the updated files."
    );

    let ns_version = fs::read_to_string(root.join("schemas/versions/kafka_3_6_2/VERSION"))
        .expect("schemas/versions/kafka_3_6_2/VERSION must exist");
    let ns_sha = ns_version
        .lines()
        .find_map(|l| l.strip_prefix("sha: "))
        .expect("schemas/versions/kafka_3_6_2/VERSION must contain a `sha:` line");
    let ns_one = fs::read_to_string(root.join("generated/kafka_3_6_2/ProduceRequest.owned.rs"))
        .expect(
            "generated/kafka_3_6_2/ProduceRequest.owned.rs must exist; run tools/regenerate.sh",
        );
    assert!(
        ns_one.contains(ns_sha),
        "generated/kafka_3_6_2/ProduceRequest.owned.rs was produced against a different SHA \
         ({ns_sha}). Run tools/regenerate.sh and commit the updated files."
    );
    println!("cargo:rerun-if-changed=schemas/versions/kafka_3_6_2/VERSION");
}