我正在为rules_scala实施Strict Java Deps
这样的功能
如果它使用warn
或error
,我真的希望能够在运行时进行配置。
我似乎记得skylark规则无法创建和访问命令行标志,但我不记得他们是否可以访问现有的标志?
主要区别在于现有的已经解析了,所以也许它们也会在某些ctx中传递。
答案 0 :(得分:2)
目前无法通过Skylark获得您想要的旗帜(strict_java_deps
)。但是,我们无法添加它,而是将#3295提交给跟踪。
对于其他标志,上下文可以访问配置片段,这些片段可以访问一些已解析的命令行标志。我认为您想要的是ctx.fragments,然后使用fragments获取java fragments,然后从中获取default_javac_flags:
# rules.bzl
def _impl(ctx):
print("flags: %s" % ctx.fragments.java.default_javac_flags)
...
frag = rule(
implementation = _impl,
fragments = ["java"], # Declare that this rule uses java fragments
)
然后:
$ bazel build --javacopt="-g:source,lines" :x
WARNING: /home/kchodorow/test/a/tester.bzl:2:3: flags: ["-g:source,lines"].