ラベル

BUILD ターゲット識別子。

すべての Label インスタンス l について、文字列表現 str(l) には、Label() 呼び出しの場所に関係なく、Label(str(l)) == l というプロパティがあります。

print() または fail() に位置引数として渡される場合、Label は、人間が読みやすいように最適化された文字列表現を使用します。この表現では、可能であれば、メイン リポジトリの観点から見たリポジトリ名を使用します。

メンバー

ラベル

Label Label(input)

呼び出し元の .bzl ソースファイルが存在するパッケージのコンテキストで、ラベル文字列を Label オブジェクトに変換します。指定された値がすでに Label の場合は、変更されずに返されます。

マクロの場合、関連する関数 native.package_relative_label() は、現在構築中のパッケージのコンテキストで入力を Label に変換します。この関数を使用して、ラベル値のルール属性によって自動的に行われる文字列からラベルへの変換を模倣します。

パラメータ

パラメータ 説明
input 文字列ラベル、 必須
入力ラベル文字列または Label オブジェクト。Label オブジェクトが渡された場合は、そのまま返されます。

名前

string Label.name

このラベルが参照するターゲットの名前。例:
Label("@@foo//pkg/foo:abc").name == "abc"

パッケージ

string Label.package

リポジトリ名を含まない、このラベルが参照するターゲットを含むパッケージの名前。例:
Label("@@repo//pkg/foo:abc").package == "pkg/foo"

相対

Label Label.relative(relName)

試験運用 。この API は試験運用版であり、随時変更される可能性があります。使用されないようお願いします。--+incompatible_enable_deprecated_label_apis
非推奨。 を設定すると、試験運用版として有効になることがあります。このメソッドは、リポジトリ名を含む引数で使用すると、予期しない動作をします。代わりに Label.same_package_label()native.package_relative_label()Label() を使用してください。

絶対(// で始まる)または現在のパッケージに対する相対ラベルを解決します。このラベルがリモート リポジトリにある場合、引数はそのリポジトリに対して相対的に解決されます。引数にリポジトリ名が含まれている場合、現在のラベルは無視され、引数はそのまま返されます。ただし、リポジトリ名が現在のリポジトリ マッピングにある場合は書き換えられます。予約ラベルもそのまま返されます。
例:

Label("//foo/bar:baz").relative(":quux") == Label("//foo/bar:quux")
Label("//foo/bar:baz").relative("//wiz:quux") == Label("//wiz:quux")
Label("@repo//foo/bar:baz").relative("//wiz:quux") == Label("@repo//wiz:quux")
Label("@repo//foo/bar:baz").relative("//visibility:public") == Label("//visibility:public")
Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@other//wiz:quux")

渡されたリポジトリ マッピングが {'@other' : '@remapped'} の場合、次のマッピングが実行されます。

Label("@repo//foo/bar:baz").relative("@other//wiz:quux") == Label("@remapped//wiz:quux")

パラメータ

パラメータ 説明
relName 必須
このラベルに対して相対的に解決されるラベル。

repo_name

string Label.repo_name

先頭にアットマーク(@)が付いていない、このラベルが参照するターゲットを含むリポジトリの正規名。例:
Label("@@foo//bar:baz").repo_name == "foo"

same_package_label

Label Label.same_package_label(target_name)

このラベルと同じパッケージに、指定されたターゲット名でラベルを作成します。

パラメータ

パラメータ 説明
target_name 必須
新しいラベルのターゲット名。

workspace_name

string Label.workspace_name

試験運用 。この API は試験運用版であり、随時変更される可能性があります。使用されないようお願いします。--+incompatible_enable_deprecated_label_apis
非推奨。 を設定すると、試験運用版として有効になることがあります。フィールド名「ワークスペース名」は誤称です。代わりに同じ動作をする Label.repo_name を使用してください。

先頭にアットマーク(@)が付いていない、このラベルが参照するターゲットを含むリポジトリの正規名。例:

Label("@@foo//bar:baz").workspace_name == "foo"

workspace_root

string Label.workspace_root

このラベルが参照するターゲットを含むリポジトリの実行ルートを、execroot に対して相対的に返します。例:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"