说我有以下类似的东西。
def _foo_aspect_impl(target, ctx):
# operations
return FooInfo(...)
foo_aspect = aspect(implementation = _foo_aspect_impl,
attr_aspects = ['deps'],
attrs = dict(
_tool = attr.Label(
# defs
),
)
)
def _foo_rule_impl(ctx):
for dep in ctx.attr.deps:
# do something with `dep[FooInfo]`
return DefaultInfo(...)
foo_rule = rule(
implementation = _foo_rule_impl,
attrs = dict(
"deps": attr.label_list(
aspects = [foo_aspect],
)
)
)
有没有办法在 中或在调用时更改foo_aspect.attr._tool
的WORKSPACE
值foo_rule
?前者更可取。
作为版本和存储库来源的用例_tool
可能会因项目而异。当切面驻留在两个项目共享的存储库中时,为这两个项目创建两个分支只是为了对_tool
.