Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.8 KiB
51 lines
1.8 KiB
5 months ago
|
"""Testing function for proto_common module"""
|
||
|
|
||
|
load("//bazel/common:proto_common.bzl", "proto_common")
|
||
|
|
||
|
def _resource_set_callback(_os, inputs_size):
|
||
|
return {"memory": 25 + 0.15 * inputs_size, "cpu": 1}
|
||
|
|
||
|
def _impl(ctx):
|
||
|
outfile = ctx.actions.declare_file(ctx.attr.name)
|
||
|
kwargs = {}
|
||
|
if ctx.attr.plugin_output == "single":
|
||
|
kwargs["plugin_output"] = outfile.path
|
||
|
elif ctx.attr.plugin_output == "multiple":
|
||
|
kwargs["plugin_output"] = ctx.bin_dir.path
|
||
|
elif ctx.attr.plugin_output == "wrong":
|
||
|
kwargs["plugin_output"] = ctx.bin_dir.path + "///"
|
||
|
if ctx.attr.additional_args:
|
||
|
additional_args = ctx.actions.args()
|
||
|
additional_args.add_all(ctx.attr.additional_args)
|
||
|
kwargs["additional_args"] = additional_args
|
||
|
if ctx.files.additional_tools:
|
||
|
kwargs["additional_tools"] = ctx.files.additional_tools
|
||
|
if ctx.files.additional_inputs:
|
||
|
kwargs["additional_inputs"] = depset(ctx.files.additional_inputs)
|
||
|
if ctx.attr.use_resource_set:
|
||
|
kwargs["resource_set"] = _resource_set_callback
|
||
|
if ctx.attr.progress_message:
|
||
|
kwargs["experimental_progress_message"] = ctx.attr.progress_message
|
||
|
proto_common.compile(
|
||
|
ctx.actions,
|
||
|
ctx.attr.proto_dep[ProtoInfo],
|
||
|
ctx.attr.toolchain[proto_common.ProtoLangToolchainInfo],
|
||
|
[outfile],
|
||
|
**kwargs
|
||
|
)
|
||
|
return [DefaultInfo(files = depset([outfile]))]
|
||
|
|
||
|
compile_rule = rule(
|
||
|
_impl,
|
||
|
attrs = {
|
||
|
"proto_dep": attr.label(),
|
||
|
"plugin_output": attr.string(),
|
||
|
"toolchain": attr.label(default = ":toolchain"),
|
||
|
"additional_args": attr.string_list(),
|
||
|
"additional_tools": attr.label_list(cfg = "exec"),
|
||
|
"additional_inputs": attr.label_list(allow_files = True),
|
||
|
"use_resource_set": attr.bool(),
|
||
|
"progress_message": attr.string(),
|
||
|
},
|
||
|
)
|