protocrap 0.1.19

A small, efficient, and flexible protobuf implementation
Documentation
load("@rules_rust//rust:defs.bzl", "rust_library", "rust_binary")
load("//bazel:proto_descriptor_set.bzl", "proto_descriptor_set")

exports_files([
    "Cargo.toml",
    "Cargo.lock",
    ".cargo/config.toml",
])

# Main protocrap library
rust_library(
    name = "protocrap",
    srcs = glob(
        ["src/**/*.rs"],
        exclude = ["src/main.rs", "src/codegen/**"],
    ),
    crate_features = [
        "std",
        "serde_support",
    ],
    edition = "2024",
    visibility = ["//visibility:public"],
    deps = [
        "@crates//:allocator-api2",
        "@crates//:base64",
        "@crates//:futures",
        "@crates//:serde",
        "@crates//:time",
    ],
)

# Protocrap codegen binary
rust_binary(
    name = "protocrap-codegen",
    srcs = ["src/main.rs"] + glob(["src/codegen/*.rs"]),
    crate_features = [
        "std",
        "codegen",
    ],
    edition = "2024",
    visibility = ["//visibility:public"],
    deps = [
        ":protocrap",
        "@crates//:allocator-api2",
        "@crates//:anyhow",
        "@crates//:prettyplease",
        "@crates//:proc-macro2",
        "@crates//:quote",
        "@crates//:syn",
    ],
)

# Descriptor proto for codegen bootstrap
proto_descriptor_set(
    name = "descriptor_set",
    deps = [
        "@protobuf//:descriptor_proto",
    ],
    visibility = ["//visibility:public"],
)