Bazel-可以用云雀动作读取命令行标志(strict_java_deps)

时间:2017-06-29 14:17:36

标签: bazel

我正在为rules_scala实施Strict Java Deps这样的功能 如果它使用warnerror,我真的希望能够在运行时进行配置。

我似乎记得skylark规则无法创建和访问命令行标志,但我不记得他们是否可以访问现有的标志?

主要区别在于现有的已经解析了,所以也许它们也会在某些ctx中传递。

1 个答案:

答案 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"].