repository_ctx

問題を報告する ソースを表示 ナイトリー · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ヘルパー関数と属性に関する情報を含むリポジトリ ルールのコンテキスト。リポジトリ ルールを作成するときに、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 を含む構造体、ダウンロードが正常に完了した場合は true のフラグ、正常に完了した場合は sha256 フィールドと integrity フィールドを含むファイルのハッシュを返します。sha256 または integrity をユーザーが指定する場合は、明示的な canonical_id を設定することを強くおすすめします(例: get_default_canonical_id)。

パラメータ

パラメータ 説明
url 文字列、または文字列の iterable。必須
同じファイルを参照するミラー URL のリスト。
output 文字列ラベルパス。デフォルトは ''
。リポジトリ ディレクトリを基準とする出力ファイルのパス。
sha256 デフォルトは ''
ダウンロードしたファイルの想定される SHA-256 ハッシュ。これは、ダウンロードしたファイルの SHA-256 ハッシュと一致する必要があります。リモート ファイルは変更される可能性があるため、SHA-256 を省略するとセキュリティ リスクが生じます。このフィールドを省略すると、ビルドが非ヘルメティックになります。開発を容易にするために設定できますが、出荷前に設定する必要があります。指定すると、まず、指定したハッシュを持つファイルがないかリポジトリのキャッシュがチェックされます。ダウンロードは、そのファイルがキャッシュに見つからなかった場合にのみ試行されます。ダウンロードが正常に完了すると、ファイルがキャッシュに追加されます。
executable デフォルトは False
作成されたファイルに実行可能フラグを設定します。デフォルトは false です。
allow_fail デフォルトは False です。
設定した場合は、ダウンロードに失敗した場合にエラーを返すのではなく、戻り値でエラーを示します。
canonical_id デフォルトは '' です。
設定すると、キャッシュ ヒットは、同じ正規 ID でファイルがキャッシュに追加された場合にのみキャッシュ ヒットに制限されます。デフォルトでは、キャッシュにチェックサム(sha256 または integrity)が使用されます。
auth デフォルトは {}
URL の認証情報を指定するオプションの辞書。
headers デフォルトは {}
すべての URL の HTTP ヘッダーを指定するオプションの辞書。
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 を含む構造体、ダウンロードが正常に完了した場合は true のフラグ、正常に完了した場合は sha256 フィールドと integrity フィールドを含むファイルのハッシュを返します。sha256 または integrity がユーザー指定の場合は、明示的な canonical_id を設定することを強くおすすめします。例: get_default_canonical_id

パラメータ

パラメータ 説明
url 文字列、または文字列の iterable。必須
同じファイルを参照するミラー URL のリスト。
output 文字列ラベルパス。デフォルトは ''
。アーカイブを展開するディレクトリのパス(リポジトリ ディレクトリからの相対パス)。
sha256 デフォルトは ''
ダウンロードしたファイルの想定される SHA-256 ハッシュ。これは、ダウンロードしたファイルの SHA-256 ハッシュと一致する必要があります。リモート ファイルは変更される可能性があるため、SHA-256 を省略するとセキュリティ リスクが発生します。このフィールドを省略すると、ビルドが非ヘルメティックになります。開発を容易にするために設定できますが、出荷前に設定する必要があります。指定されている場合、まずリポジトリ キャッシュで指定されたハッシュのファイルがチェックされます。キャッシュにファイルが見つからない場合のみ、ダウンロードが試行されます。ダウンロードが正常に完了すると、ファイルがキャッシュに追加されます。
type デフォルトは ''
ダウンロードしたファイルのアーカイブ タイプ。デフォルトでは、アーカイブ タイプは URL のファイル拡張子から判断されます。ファイルに拡張子がない場合は、zip、jar、war、aar、nupkg、tar、tar.gz、tgz、tar.xz、txz、.tar.zst、.tzst、zar、.deb2、.deb2、tar.bz のいずれかを明示的に指定できます。
stripPrefix デフォルトは ''
抽出されたファイルから削除するディレクトリ接頭辞。多くのアーカイブには、アーカイブ内のすべてのファイルを含む最上位ディレクトリが含まれています。この接頭辞を build_file で何度も指定する代わりに、このフィールドを使用して、抽出されたファイルから接頭辞を削除できます。
allow_fail デフォルトは False です。
設定した場合は、ダウンロードに失敗した場合にエラーを返すのではなく、戻り値でエラーを示します。
canonical_id デフォルトは '' です。
設定すると、キャッシュ ヒットは、同じ正規 ID でファイルがキャッシュに追加された場合にのみキャッシュ ヒットに制限されます。デフォルトでは、キャッシュにチェックサムを使用します」(sha256 または integrity)。
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 required
引数のリスト。最初の要素は、実行するプログラムのパスにする必要があります。
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 文字列ラベルパス。デフォルトは ''
。アーカイブを展開するディレクトリのパス(リポジトリ ディレクトリからの相対パス)。
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 文字列。必須
目的の環境変数の名前。
default string: 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')

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

パラメータ

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

パス

path repository_ctx.path(path)

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

パラメータ

パラメータ 説明
path stringLabel、または 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。必須
シンボリック リンクが参照するパス。
文字列ラベルパス。必須
作成するシンボリック リンクのパス。

テンプレート

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

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

パラメータ

パラメータ 説明
path 文字列ラベルパス。必須
リポジトリ ディレクトリを基準とする、作成するファイルのパス。
template 文字列ラベルパス。必須
テンプレート ファイルのパス。
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 文字列ラベルパス。必須
監視するファイルのパス。

watch_tree

None repository_ctx.watch_tree(path)

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

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

パラメータ

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

これは

path repository_ctx.which(program)

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

パラメータ

パラメータ 説明
program required
プログラムはパス内で検出します。
None を返す場合があります。

workspace_root

path repository_ctx.workspace_root

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