[英]How to query sibling rules from a Bazel rule
我希望能夠在 Bazel BUILD 文件中執行以下操作:
alpha(
name = "hello world",
color = "blue"
)
beta(
name = "hello again"
)
其中alpha
和beta
是自定義規則。 我希望beta
能夠訪問alpha
規則的color
屬性,而無需添加 label 屬性。 在 Bazel 查詢中,我可以這樣做:
bazel query 'kind(beta, siblings(kind(alpha, //...)))'
這給了我與alpha
並排的beta
。 我能以某種方式從beta
規則的實施 function 中實現相同的目標嗎?
def _beta_rule_impl(ctx):
# This does not exist, I wish it did: ctx.siblings(kind='alpha')
我已經看到這是用這樣的 label 完成的
beta(
name = "hello again",
alpha_link = ":hello world" # explicitly linking
)
但我覺得這有點冗長,特別是因為有兄弟查詢支持。
在我的場景中,我試圖在繼續之前獲得一個genrule
來調用test
規則:
genrule(
name = "generate_buf_image",
srcs = [":protos", "cookie"],
outs = ["buf-image.json"],
cmd = "$(location //third_party/buf:cas_buf_image) //example-grpc/proto/v1:proto_backwards_compatibility_check $(SRCS) >$(OUTS)",
tools = [
"//third_party/buf:cas_buf_image",
"@buf",
],
)
如果cas_buf_image.sh
有ls -l "example-grpc/proto/v1" >&2
,它顯示:
… cookie -> …/example-grpc/proto/v1/cookie
… example.proto -> …/example-grpc/proto/v1/example.proto
IOW,檢查example-grpc/proto/v1/cookie
鏈接到什么並cd
到它的目錄然后執行git
命令應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.