repository_ctx

ヘルパー関数と属性に関する情報を含むリポジトリ ルールのコンテキスト。リポジトリ ルールを作成すると、implementation 関数の引数として repository_ctx オブジェクトが取得されます。

メンバー

attr

struct repository_ctx.attr

属性の値にアクセスするための構造体。値はユーザーが指定します(指定しない場合はデフォルト値が使用されます)。

delete

bool repository_ctx.delete(path)

ファイルまたはディレクトリを削除します。この呼び出しによってファイルまたはディレクトリが実際に削除されたかどうかを示すブール値を返します。

パラメータ

パラメータ 説明
path string、または path。必須
削除するファイルのパス。リポジトリ ディレクトリからの相対パスまたは絶対パス。パスまたは文字列を指定できます。

ダウンロード

unknown repository_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', block=True)

指定された URL のファイルを出力パスにダウンロードし、success を含む構造体を返します。success は、ダウンロードが正常に完了した場合は true になるフラグです。ダウンロードが正常に完了した場合は、sha256 フィールドと integrity フィールドを含むファイルのハッシュも返します。

パラメータ

パラメータ 説明
url 文字列、または 文字列の Iterable。必須
同じファイルを参照するミラー URL のリスト。
output stringLabelpath。デフォルトは ''
です。 リポジトリ ディレクトリを基準とする出力ファイルのパス。
sha256 デフォルトは ''
です。ダウンロードしたファイルの想定される SHA-256 ハッシュ。これは、ダウンロードしたファイルの SHA-256 ハッシュと一致する必要があります。リモート ファイルは変更される可能性があるため、SHA-256 を省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになります。開発を容易にするために省略可能ですが、出荷前に設定する必要があります。
executable デフォルトは False
です。作成されたファイルに実行可能フラグを設定します。デフォルトは false です。
allow_fail デフォルトは False
です。 設定されている場合、ダウンロードの失敗に対してエラーを発生させる代わりに、戻り値でエラーを示します。
canonical_id デフォルトは ''
です。 設定されている場合、キャッシュ ヒットは、同じ正規 ID でファイルがキャッシュに追加されたケースに制限されます。
auth デフォルトは {}
です。 一部の URL の認証情報を指定する省略可能な辞書。
headers デフォルトは {}
です。 すべての URL の HTTP ヘッダーを指定するオプションの辞書。
integrity デフォルトは ''
です。 ダウンロードしたファイルの想定されるチェックサム(Subresource Integrity 形式)。これは、ダウンロードしたファイルのチェックサムと一致している必要があります。リモート ファイルは変更される可能性があるため、チェックサムを省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになります。開発を容易にするために省略可能ですが、出荷前に設定する必要があります。
block デフォルトは True
です。 false に設定すると、呼び出しはすぐに戻り、通常の戻り値の代わりに、1 つのメソッド wait() を持つトークンが返されます。このメソッドは、ダウンロードが完了するまでブロックし、通常の戻り値を返すか、通常どおり例外をスローします。

download_and_extract

struct repository_ctx.download_and_extract(url, output='', sha256='', type='', stripPrefix='', allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', rename_files={})

指定された URL のファイルをダウンロードして出力パスに保存し、抽出して、success を含む構造体を返します。success は、ダウンロードが正常に完了した場合は true になるフラグです。ダウンロードが正常に完了した場合は、sha256 フィールドと integrity フィールドを含むファイルのハッシュも返します。

パラメータ

パラメータ 説明
url 文字列、または 文字列の Iterable。必須
同じファイルを参照するミラー URL のリスト。
output stringLabelpath。デフォルトは ''
です。リポジトリ ディレクトリに対する相対パスで、アーカイブが解凍されるディレクトリのパス。
sha256 デフォルトは ''
です。ダウンロードしたファイルの想定される SHA-256 ハッシュ。これは、ダウンロードしたファイルの SHA-256 ハッシュと一致する必要があります。リモート ファイルは変更される可能性があるため、SHA-256 を省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになります。開発を容易にするために省略できますが、出荷前に設定する必要があります。指定された場合、リポジトリ キャッシュで指定されたハッシュを持つファイルが最初にチェックされます。ダウンロードが試行されるのは、ファイルがキャッシュで見つからなかった場合のみです。ダウンロードが完了すると、ファイルがキャッシュに追加されます。
type デフォルトは ''
です。ダウンロードしたファイルのアーカイブ タイプ。デフォルトでは、アーカイブ タイプは URL のファイル拡張子から判断されます。ファイルに拡張子がない場合は、ここで「zip」、「jar」、「war」、「aar」、「tar」、「tar.gz」、「tgz」、「tar.xz」、「txz」、「.tar.zst」、「.tzst」、「tar.bz2」、「.tbz」、「.ar」、「.deb」のいずれかを明示的に指定できます。
stripPrefix デフォルトは ''
です。解凍されたファイルから削除するディレクトリ接頭辞。多くのアーカイブには、アーカイブ内のすべてのファイルを含む最上位のディレクトリが含まれています。build_file でこの接頭辞を何度も指定する必要がある代わりに、このフィールドを使用して抽出されたファイルから接頭辞を削除できます。
allow_fail デフォルトは False
です。 設定されている場合、ダウンロードの失敗に対してエラーを発生させる代わりに、戻り値でエラーを示します。
canonical_id デフォルトは ''
です。 設定されている場合、キャッシュ ヒットは、同じ正規 ID でファイルがキャッシュに追加されたケースに制限されます。
auth デフォルトは {}
です。 一部の URL の認証情報を指定する省略可能な辞書。
headers デフォルトは {}
です。 すべての URL の HTTP ヘッダーを指定するオプションの辞書。
integrity デフォルトは ''
です。 ダウンロードしたファイルの想定されるチェックサム(Subresource Integrity 形式)。これは、ダウンロードしたファイルのチェックサムと一致している必要があります。リモート ファイルは変更される可能性があるため、チェックサムを省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ハーメチックになります。開発を容易にするために省略可能ですが、出荷前に設定する必要があります。
rename_files デフォルトは {}
です。 抽出時に名前を変更するファイルを指定するオプションの辞書。キーと完全に一致する名前のエントリは、ディレクトリ プレフィックスの調整前に値に名前変更されます。これは、Unicode 以外のファイル名を含むアーカイブや、大文字と小文字を区別しないファイル システムで同じパスに抽出されるファイルを含むアーカイブを抽出するために使用できます。

execute

exec_result repository_ctx.execute(arguments, timeout=600, environment={}, quiet=True, working_directory="")

引数のリストで指定されたコマンドを実行します。コマンドの実行時間は timeout によって制限されます(秒単位、デフォルトは 600 秒)。このメソッドは、コマンドの出力を格納する exec_result 構造体を返します。environment マップを使用して、プロセスに渡される一部の環境変数をオーバーライドできます。

パラメータ

パラメータ 説明
arguments 必須
引数のリスト。最初の要素は、実行するプログラムのパスにする必要があります。
timeout デフォルトは 600
です。コマンドの最大実行時間(秒単位)。デフォルトは 600 秒です。
environment デフォルトは {}
です。プロセスに渡されるように、いくつかの環境変数を強制的に設定します。
quiet デフォルトは True
です。stdout と stderr をターミナルに出力するかどうか。
working_directory デフォルトは ""
です。コマンド実行の作業ディレクトリ。リポジトリ ルートからの相対パスまたは絶対パスを指定できます。

extract

None repository_ctx.extract(archive, output='', stripPrefix='', *, rename_files={}, watch_archive='auto')

アーカイブをリポジトリ ディレクトリに抽出します。

パラメータ

パラメータ 説明
archive stringLabelpath。必須。
解凍されるアーカイブへのパス。リポジトリ ディレクトリからの相対パス。
output stringLabelpath。デフォルトは ''
です。リポジトリ ディレクトリに対する相対パスで、アーカイブが解凍されるディレクトリのパス。
stripPrefix デフォルトは ''
です。解凍されたファイルから削除するディレクトリ接頭辞。多くのアーカイブには、アーカイブ内のすべてのファイルを含む最上位のディレクトリが含まれています。build_file でこの接頭辞を何度も指定する必要がある代わりに、このフィールドを使用して抽出されたファイルから接頭辞を削除できます。
rename_files デフォルトは {}
です。 抽出時に名前を変更するファイルを指定するオプションの辞書。キーと完全に一致する名前のエントリは、ディレクトリ プレフィックスの調整前に値に名前変更されます。これは、Unicode 以外のファイル名を含むアーカイブや、大文字と小文字を区別しないファイル システムで同じパスに抽出されるファイルを含むアーカイブを抽出するために使用できます。
watch_archive デフォルトは 'auto' です。アーカイブ ファイルを監視するかどうか。
文字列「yes」、「no」、「auto」を指定できます。「yes」を渡すと、watch() メソッドがすぐに呼び出されます。「no」を渡すと、ファイルの監視は試行されません。「auto」を渡すと、ファイルの監視が許可されている場合にのみ、ファイルの監視が試行されます(詳しくは、watch() のドキュメントをご覧ください)。

ファイル

None repository_ctx.file(path, content='', executable=True, legacy_utf8=True)

指定された内容でリポジトリ ディレクトリにファイルを作成します。

パラメータ

パラメータ 説明
path 文字列ラベルパス。必須
リポジトリ ディレクトリを基準とする、作成するファイルのパス。
content デフォルトは ''
です。作成するファイルの内容。デフォルトは空です。
executable デフォルトは True
です。作成されたファイルに実行可能フラグを設定します。デフォルトは true です。
legacy_utf8 デフォルトは True
です。ファイル コンテンツを UTF-8 にエンコードします。デフォルトは true です。今後のバージョンでは、デフォルトが変更され、このパラメータは削除されます。

getenv

string repository_ctx.getenv(name, default=None)

環境変数 name の値が存在する場合は文字列として返し、存在しない場合は default を返します。

増分ビルドの場合、name で指定された変数の値が変更されると、このリポジトリが再取得されます。

パラメータ

パラメータ 説明
name string; required
目的の環境変数の名前
default 文字列、または None。デフォルトは None
です。 `name` が見つからない場合に返すデフォルト値
None を返すことがあります。

name

string repository_ctx.name

このルールによって作成された外部リポジトリの名前。

os

repository_os repository_ctx.os

システムから情報にアクセスするための構造体。

patch

None repository_ctx.patch(patch_file, strip=0, *, watch_patch='auto')

パッチファイルを外部リポジトリのルート ディレクトリに適用します。パッチ ファイルは、標準の統合差分形式のファイルである必要があります。Bazel ネイティブのパッチ実装は、パッチ コマンドライン ツールのようなファジー マッチとバイナリ パッチをサポートしていません。

パラメータ

パラメータ 説明
patch_file stringLabelpath。必須
適用するパッチ ファイル。ラベル、相対パス、絶対パスを指定できます。相対パスの場合、リポジトリ ディレクトリに解決されます。
strip デフォルトは 0
です。ファイル名から指定された数の先頭コンポーネントを削除します。
watch_patch デフォルトは 'auto'
です。パッチファイルを監視するかどうかを指定します。文字列「yes」、「no」、「auto」を指定できます。「yes」を渡すと、watch() メソッドがすぐに呼び出されます。「no」を渡すと、ファイルの監視は試行されません。「auto」を渡すと、ファイルの監視が許可されている場合にのみ、ファイルの監視が試行されます(詳しくは、watch() のドキュメントをご覧ください)。

パス

path repository_ctx.path(path)

文字列、ラベル、パスからパスを返します。パスが相対パスの場合、リポジトリ ディレクトリを基準とする相対パスとして解決されます。パスがラベルの場合、対応するファイルのパスに解決されます。リモート リポジトリは分析フェーズで実行されるため、ターゲット結果に依存できません(ラベルは生成されていないファイルを指す必要があります)。path がパスの場合、そのパスをそのまま返します。

パラメータ

パラメータ 説明
path stringLabelpath。必須
パスの作成元となる文字列、ラベル、パス

read

string repository_ctx.read(path, *, watch='auto')

ファイル システム上のファイルの内容を読み取ります。

パラメータ

パラメータ 説明
path 文字列ラベルパス。必須。
読み取るファイルのパス。
watch デフォルトは 'auto'
です。ファイルを監視するかどうか。文字列「yes」、「no」、「auto」を指定できます。「yes」を渡すと、watch() メソッドがすぐに呼び出されます。「no」を渡すと、ファイルの監視は試行されません。「auto」を渡すと、ファイルの監視が許可されている場合にのみ、ファイルの監視が試行されます(詳しくは、watch() のドキュメントをご覧ください)。

report_progress

None repository_ctx.report_progress(status='')

このリポジトリまたはモジュール拡張機能の取得の進行状況ステータスを更新します。

パラメータ

パラメータ 説明
status string; デフォルトは ''
フェッチの進行状況の現在のステータスを説明する文字列

None repository_ctx.symlink(target, link_name)

ファイル システムにシンボリック リンクを作成します。

パラメータ

パラメータ 説明
target stringLabelpath。必須
シンボリック リンクが指すパス。
stringLabelpath。必須
作成するシンボリック リンクのパス。

テンプレート

None repository_ctx.template(path, template, substitutions={}, executable=True, *, watch_template='auto')

template を使用して新しいファイルを生成します。template 内の substitutions のキーのすべての出現箇所が、対応する値に置き換えられます。結果は path に書き込まれます。オプションの executable 引数(デフォルトは true)を設定して、実行可能ビットをオンまたはオフにできます。

パラメータ

パラメータ 説明
path 文字列ラベルパス。必須
リポジトリ ディレクトリを基準とする、作成するファイルのパス。
template stringLabelpath。必須。
テンプレート ファイルのパス。
substitutions デフォルトは {}
です。テンプレートを拡張するときに行う置換。
executable デフォルトは True
です。作成されたファイルに実行可能フラグを設定します。デフォルトは true です。
watch_template デフォルトは 'auto'
です。テンプレート ファイルを監視するかどうか。文字列「yes」、「no」、「auto」を指定できます。「yes」を渡すと、watch() メソッドがすぐに呼び出されます。「no」を渡すと、ファイルの監視は試行されません。「auto」を渡すと、ファイルの監視が許可されている場合にのみ、ファイルの監視が試行されます(詳しくは、watch() のドキュメントをご覧ください)。

再起動する

None repository_ctx.watch(path)

指定されたパスの変更を監視するように Bazel に指示します。パスが存在するかどうか、ファイルかディレクトリかに関係なく監視します。ファイルまたはディレクトリに変更を加えると、このリポジトリまたはモジュール拡張機能が無効になり、次回に再取得または再評価されます。

「変更」には、ファイルの内容の変更(パスがファイルの場合)、パスがファイルだったがディレクトリになった場合、またはその逆の場合、パスが存在し始めた場合、または存在しなくなった場合が含まれます。特に、パスがディレクトリの場合、ディレクトリ内のファイルの変更は含まれません。代わりに path.readdir() を使用してください。

現在取得中のリポジトリ内、または現在のモジュール拡張機能の作業ディレクトリ内のパスを監視しようとすると、エラーが発生します。現在の Bazel ワークスペース外のパスを監視しようとするモジュール拡張機能もエラーになります。

パラメータ

パラメータ 説明
path stringLabelpath。必須
監視するファイルのパス。

watch_tree

None repository_ctx.watch_tree(path)

指定されたパスの下にあるファイルまたはディレクトリの変更を監視するように Bazel に指示します。ファイルの内容、ファイルやディレクトリの存在、ファイル名やディレクトリ名が変更されると、このリポジトリが再取得されます。

現在フェッチ中のリポジトリ内のパスを監視しようとすると、エラーが発生します。

パラメータ

パラメータ 説明
path stringLabelpath。必須
監視するディレクトリ ツリーのパス。

これは

path repository_ctx.which(program)

対応するプログラムのパスを返します。パスにそのようなプログラムがない場合は None を返します。

パラメータ

パラメータ 説明
program 必須
パス内で検索するプログラム。
None を返すことがあります。

workspace_root

path repository_ctx.workspace_root

bazel 呼び出しのルート ワークスペースへのパス。