2017-07-13 52 views
0

我有一個java測試我正在嘗試使用某種複雜的下載邏輯的沙箱。
我正在考慮編寫一個資源庫規則,它將使用repository_ctx.execute來啓動一個java應用程序來運行這個邏輯,而不是在雲雀中複製它。Bazel存儲庫規則 - 在repository_ctx.execute中下載文件

我該如何得到這個電話的內容?
我可以通過Java應用程序的路徑/文件名下載文件,但我不知道什麼路徑給它。我也許可以打印字節到標準輸出並通過exec_result(聽起來很可怕)收集它們。

回答

1

您可以使用repository_ctx.path("path/to/file")返回path以獲取相對於生成的工作區的路徑,然後使用path.realpath可以獲得輸出的規範名稱。

收集exec_result的輸出用作文件輸入應該可以工作,但從未嘗試過我的知識,因此可能會出現奇怪的編碼問題。

+0

這可能是一個不存在的路徑權利?如果我執行repo_ctx.path(「downloads/MySQL.installer」)並要求工具下載,那麼它是否會輸出規則?最後一部分是目錄是否可以成爲輸出?謝謝! – Ittai

+1

我不明白「它會是規則的輸出嗎?」題。這可能是一個不存在的路徑,工具必須創建它。 NM: –

+0

NM。我意識到我創建的BUILD文件應該爲*目錄*聲明一個文件組,這將使其成爲規則的輸出。謝謝。 – Ittai