2017-07-13 8 views
0

私はJavaテストをしています。私は複雑なダウンロードロジックを多用しています。
私はrepository_ctx.executeを使ってJavaアプリケーションを起動し、skylarkで複製するのではなく、このロジックを実行するリポジトリルールを書くことを考えています。Bazelのリポジトリルール - repository_ctx.executeでファイルをダウンロード

この呼び出しの内容はどのように取得する必要がありますか?
ファイルをダウンロードするパス/ファイル名をJavaアプリケーションに渡すことはできますが、それをどのようなパスに渡すかはわかりません。私は多分バイトをstdoutに出力し、exec_result(恐ろしい音)でそれらを収集することができます。

答えて

1

repository_ctx.path("path/to/file")は、pathを返して、生成されたワークスペースに相対的なパスを取得し、path.realpathを使用すると、出力の正規名を取得できます。

ファイル入力として使用するexec_resultの出力を収集する必要はありませんが、私の知る限り試したことがないので、奇妙なエンコーディングの問題が発生する可能性があります。

+0

これは存在しないパスの権利ですか?私がrepo_ctx.path( "downloads/MySQL.installer")を実行してダウンロードするようにツールに依頼すると、それはルールの出力になりますか?最後の部分は、ディレクトリが出力できるかどうかです。ありがとう! – Ittai

+1

私は "それはルールの出力ですか?"質問。これは存在しないパスであり、ツールはそのパスを作成する必要があります。 –

+0

NM。私が作成したBUILDファイルは、*ディレクトリ*のファイルグループを宣言してルールの出力にする必要があることに気付きました。ありがとう。 – Ittai

関連する問題