load("@rules_proto//proto:defs.bzl", "proto_library") load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_test") # Prost generator binary for converting proto files to Rust code rust_binary( name = "prost_generator", srcs = ["prost_generator.rs"], edition = "2021", visibility = ["//visibility:public"], deps = [ "@crates//:prost", "@crates//:prost-build", "@crates//:serde", "@crates//:tempfile", ], ) # Generate Rust code for databuild proto genrule( name = "generate_databuild_rust", srcs = [ "databuild.proto", ], outs = ["databuild.rs"], cmd = "PROTOC=$(location @com_google_protobuf//:protoc) $(location :prost_generator) $(location databuild.proto) /dev/null $@", tools = [ "//databuild:prost_generator", "@com_google_protobuf//:protoc", ], visibility = ["//visibility:public"], ) # DataBuild library using generated prost code rust_library( name = "databuild", srcs = [ "lib.rs", "event_log/mod.rs", "event_log/stdout.rs", "event_log/sqlite.rs", "event_log/postgres.rs", ":generate_databuild_rust", ], edition = "2021", visibility = ["//visibility:public"], deps = [ "@crates//:prost", "@crates//:prost-types", "@crates//:rusqlite", "@crates//:serde", "@crates//:serde_json", "@crates//:tokio", "@crates//:uuid", ], proc_macro_deps = [ "@crates//:async-trait", ], ) # Legacy filegroup for backwards compatibility filegroup( name = "proto", srcs = ["databuild.proto"], visibility = ["//visibility:public"], )