merge: master <--- feat/refactor-rust-rules
* HEAD
| \
| * 87aee8e1
<github@luxolus.com> rust: refactor {prost_proto|tonic_grpc}_library macros
| /
| master
Signed-off-by: Bazaah <github@luxolus.com>
This commit is contained in:
commit
f5bdb0d3f4
|
@ -1,23 +1,56 @@
|
|||
"""Generated definition of rust_prost_proto_library."""
|
||||
|
||||
load("@rules_rust//rust:defs.bzl", "rust_library")
|
||||
load("//:defs.bzl", "bazel_build_rule_common_attrs", "proto_compile_attrs")
|
||||
load("//rust:common.bzl", "create_name_to_label", "prepare_prost_proto_deps", "prost_compile_attrs")
|
||||
load("//rust:rust_prost_proto_compile.bzl", "rust_prost_proto_compile")
|
||||
load("//:defs.bzl", "bazel_build_rule_common_attrs", "proto_compile_attrs")
|
||||
load("//rust:rust_fixer.bzl", "rust_proto_crate_fixer", "rust_proto_crate_root")
|
||||
load("@rules_rust//rust:defs.bzl", "rust_library")
|
||||
|
||||
def rust_prost_proto_library(name, **kwargs): # buildifier: disable=function-docstring
|
||||
def rust_prost_proto_library(name, **kwargs):
|
||||
"""
|
||||
Wrapper around %rust_prost_proto_compile and @rules_rust://defs.bzl%rust_library
|
||||
that creates a rust_library binding to the given $protos.
|
||||
|
||||
This macro requires that you pass labels to the following crates as a part
|
||||
of your $deps:
|
||||
|
||||
- pbjson, pbjson-types
|
||||
- prost, prost-types
|
||||
- serde
|
||||
|
||||
and $proc_macro_deps:
|
||||
|
||||
- prost-derive
|
||||
|
||||
Failing to do so will lead to compile errors, as the default set of protoc
|
||||
plugins generate code that requires these crates' types be in scope.
|
||||
|
||||
Args:
|
||||
|
||||
* name | The name of the rust_library target
|
||||
* protos | List of proto_library labels to compile
|
||||
* declared_proto_packages | List of protobuf 'package's defined in $protos
|
||||
* deps | List of deps to link into the rust_library
|
||||
* proc_macro_deps | List of proc_macro_deps to link into the rust_library
|
||||
? crate_name | Override the rust_library's crate name (default: $name, normalized)
|
||||
? options | Dict plugin-label -> strings of options to pass to protoc plugins
|
||||
? extra_protoc_args | Extra args to pass directly to protoc
|
||||
? extra_protoc_files | Extra data file labels to make available to protoc invocations
|
||||
? verbose | Int 0-5, enables debugging logs during protoc invocations (default: 0)
|
||||
? **kwargs | https://bazel.build/reference/be/common-definitions#common-attributes
|
||||
"""
|
||||
|
||||
# Compile protos
|
||||
name_pb = name + "_pb"
|
||||
name_pb = name + "_pb"
|
||||
name_fixed = name_pb + "_fixed"
|
||||
name_root = name + "_root"
|
||||
name_root = name + "_root"
|
||||
|
||||
prost_proto_deps = kwargs.get("prost_proto_deps", [])
|
||||
prost_proto_deps = kwargs.get("prost_proto_deps", [])
|
||||
prost_proto_compiled_targets = prepare_prost_proto_deps(prost_proto_deps)
|
||||
|
||||
rust_prost_proto_compile(
|
||||
name = name_pb,
|
||||
crate_name = name,
|
||||
name = name_pb,
|
||||
crate_name = name,
|
||||
prost_proto_deps = prost_proto_compiled_targets,
|
||||
**{
|
||||
k: v
|
||||
|
@ -30,28 +63,24 @@ def rust_prost_proto_library(name, **kwargs): # buildifier: disable=function-do
|
|||
|
||||
# Fix up imports
|
||||
rust_proto_crate_fixer(
|
||||
name = name_fixed,
|
||||
name = name_fixed,
|
||||
compilation = name_pb,
|
||||
)
|
||||
|
||||
rust_proto_crate_root(
|
||||
name = name_root,
|
||||
name = name_root,
|
||||
crate_dir = name_fixed,
|
||||
)
|
||||
|
||||
# Create rust_prost library
|
||||
rust_library(
|
||||
name = name,
|
||||
edition = "2021",
|
||||
crate_root = name_root,
|
||||
crate_name = kwargs.get("crate_name"),
|
||||
srcs = [name_fixed],
|
||||
deps = kwargs.get("prost_deps", [create_name_to_label("prost"), create_name_to_label("prost-types")]) +
|
||||
kwargs.get("pbjson_deps", [create_name_to_label("pbjson-types"), create_name_to_label("pbjson")]) +
|
||||
kwargs.get("serde_deps", [create_name_to_label("serde")]) +
|
||||
kwargs.get("deps", []) +
|
||||
prost_proto_deps,
|
||||
proc_macro_deps = [kwargs.get("prost_derive_dep", create_name_to_label("prost-derive"))],
|
||||
name = name,
|
||||
edition = "2021",
|
||||
crate_root = name_root,
|
||||
crate_name = kwargs.get("crate_name"),
|
||||
srcs = [name_fixed],
|
||||
deps = kwargs.get("deps", []) + prost_proto_deps,
|
||||
proc_macro_deps = kwargs.get("proc_macro_deps", []),
|
||||
**{
|
||||
k: v
|
||||
for (k, v) in kwargs.items()
|
||||
|
|
|
@ -1,23 +1,57 @@
|
|||
"""Generated definition of rust_tonic_grpc_library."""
|
||||
|
||||
load("@rules_rust//rust:defs.bzl", "rust_library")
|
||||
load("//:defs.bzl", "bazel_build_rule_common_attrs", "proto_compile_attrs")
|
||||
load("//rust:common.bzl", "create_name_to_label", "prepare_prost_proto_deps", "prost_compile_attrs")
|
||||
load("//rust:rust_tonic_grpc_compile.bzl", "rust_tonic_grpc_compile")
|
||||
load("//:defs.bzl", "bazel_build_rule_common_attrs", "proto_compile_attrs")
|
||||
load("//rust:rust_fixer.bzl", "rust_proto_crate_fixer", "rust_proto_crate_root")
|
||||
load("@rules_rust//rust:defs.bzl", "rust_library")
|
||||
|
||||
def rust_tonic_grpc_library(name, **kwargs): # buildifier: disable=function-docstring
|
||||
def rust_tonic_grpc_library(name, **kwargs):
|
||||
"""
|
||||
Wrapper around %rust_tonic_grpc_compile and @rules_rust://defs.bzl%rust_library
|
||||
that creates a rust_library binding to the given $protos.
|
||||
|
||||
This macro requires that you pass labels to the following crates as a part
|
||||
of your $deps:
|
||||
|
||||
- pbjson, pbjson-types
|
||||
- prost, prost-types
|
||||
- serde
|
||||
- tonic
|
||||
|
||||
and $proc_macro_deps:
|
||||
|
||||
- prost-derive
|
||||
|
||||
Failing to do so will lead to compile errors, as the default set of protoc
|
||||
plugins generate code that requires these crates' types be in scope.
|
||||
|
||||
Args:
|
||||
|
||||
* name | The name of the rust_library target
|
||||
* protos | List of proto_library labels to compile
|
||||
* declared_proto_packages | List of protobuf 'package's defined in $protos
|
||||
* deps | List of deps to link into the rust_library
|
||||
* proc_macro_deps | List of proc_macro_deps to link into the rust_library
|
||||
? crate_name | Override the rust_library's crate name (default: $name, normalized)
|
||||
? options | Dict plugin-label -> strings of options to pass to protoc plugins
|
||||
? extra_protoc_args | Extra args to pass directly to protoc
|
||||
? extra_protoc_files | Extra data file labels to make available to protoc invocations
|
||||
? verbose | Int 0-5, enables debugging logs during protoc invocations (default: 0)
|
||||
? **kwargs | https://bazel.build/reference/be/common-definitions#common-attributes
|
||||
"""
|
||||
|
||||
# Compile protos
|
||||
name_pb = name + "_pb"
|
||||
name_pb = name + "_pb"
|
||||
name_fixed = name_pb + "_fixed"
|
||||
name_root = name + "_root"
|
||||
name_root = name + "_root"
|
||||
|
||||
prost_proto_deps = kwargs.get("prost_proto_deps", [])
|
||||
prost_proto_deps = kwargs.get("prost_proto_deps", [])
|
||||
prost_proto_compiled_targets = prepare_prost_proto_deps(prost_proto_deps)
|
||||
|
||||
rust_tonic_grpc_compile(
|
||||
name = name_pb,
|
||||
crate_name = name,
|
||||
name = name_pb,
|
||||
crate_name = name,
|
||||
prost_proto_deps = prost_proto_compiled_targets,
|
||||
**{
|
||||
k: v
|
||||
|
@ -30,29 +64,24 @@ def rust_tonic_grpc_library(name, **kwargs): # buildifier: disable=function-doc
|
|||
|
||||
# Fix up imports
|
||||
rust_proto_crate_fixer(
|
||||
name = name_fixed,
|
||||
name = name_fixed,
|
||||
compilation = name_pb,
|
||||
)
|
||||
|
||||
rust_proto_crate_root(
|
||||
name = name_root,
|
||||
name = name_root,
|
||||
crate_dir = name_fixed,
|
||||
)
|
||||
|
||||
# Create rust_tonic library
|
||||
rust_library(
|
||||
name = name,
|
||||
edition = "2021",
|
||||
crate_root = name_root,
|
||||
crate_name = kwargs.get("crate_name"),
|
||||
srcs = [name_fixed],
|
||||
deps = kwargs.get("prost_deps", [create_name_to_label("prost"), create_name_to_label("prost-types")]) +
|
||||
kwargs.get("pbjson_deps", [create_name_to_label("pbjson-types"), create_name_to_label("pbjson")]) +
|
||||
kwargs.get("serde_deps", [create_name_to_label("serde")]) +
|
||||
kwargs.get("tonic_deps", [create_name_to_label("tonic")]) +
|
||||
kwargs.get("deps", []) +
|
||||
prost_proto_deps,
|
||||
proc_macro_deps = [kwargs.get("prost_derive_dep", create_name_to_label("prost-derive"))],
|
||||
name = name,
|
||||
edition = "2021",
|
||||
crate_root = name_root,
|
||||
crate_name = kwargs.get("crate_name"),
|
||||
srcs = [name_fixed],
|
||||
deps = kwargs.get("deps", []) + prost_proto_deps,
|
||||
proc_macro_deps = kwargs.get("proc_macro_deps", []),
|
||||
**{
|
||||
k: v
|
||||
for (k, v) in kwargs.items()
|
||||
|
|
Loading…
Reference in New Issue