fn main() {
    let proto_dir = "proto";

    let protos = [
        format!("{proto_dir}/common.proto"),
        format!("{proto_dir}/archive.proto"),
        format!("{proto_dir}/blame.proto"),
        format!("{proto_dir}/blob.proto"),
        format!("{proto_dir}/branch.proto"),
        format!("{proto_dir}/commit.proto"),
        format!("{proto_dir}/diff.proto"),
        format!("{proto_dir}/fork.proto"),
        format!("{proto_dir}/init.proto"),
        format!("{proto_dir}/merge.proto"),
        format!("{proto_dir}/tag.proto"),
        format!("{proto_dir}/tree.proto"),
    ];

    tonic_prost_build::configure()
        .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]")
        .type_attribute("ObjectId", "#[serde(transparent)]")
        .field_attribute("ObjectId.value", "#[serde(rename = \"0\")]")
        .compile_protos(&protos, &[proto_dir.to_string()])
        .unwrap_or_else(|e| panic!("Failed to compile protos: {e}"));
}
