Bazel存储库规则 - 在repository_ctx.execute中下载文件

时间:2017-07-13 18:26:16

标签: bazel

我有一个java测试我正在尝试使用沙盒,它有点复杂的下载逻辑 我正在考虑编写一个存储库规则,它将使用repository_ctx.execute启动一个java应用程序来运行这个逻辑而不是在skylark中复制它。

我该如何获得此通话的内容?
我可以传递java app一个路径/文件名来下载文件,但后来我不确定给它的路径。我可以将字节打印到stdout并通过exec_result收集它们(听起来很可怕)。

1 个答案:

答案 0 :(得分:1)

您可以使用返回repository_ctx.path("path/to/file")path来获取相对于生成的工作区的路径,然后使用path.realpath您可以获得输出的规范名称。

收集exec_result的输出以用作文件输入应该可以工作,但它从未尝试过我的知识,所以可能会发生奇怪的编码问题。