ラベル

問題を報告 ソースを表示

BUILD ターゲット識別子。

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

メンバー

ラベル

Label Label(input)

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

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

パラメータ

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

name

string Label.name

このラベルによって参照されるターゲットの名前。次に例を示します。
Label("@@foo//pkg/foo:abc").name == "abc"

パッケージ

string Label.package

このラベルによって参照されるターゲットを含むパッケージの名前(リポジトリ名は除く)。次に例を示します。
Label("@@repo//pkg/foo:abc").package == "pkg/foo"

relative

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 required
これに対して解決されるラベル。

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 required
新しいラベルのターゲット名。

workspace_name

string Label.workspace_name

試験運用版。この API は試験運用版であり、いつでも変更される可能性があります。これに依存しないでください。--+incompatible_enable_deprecated_label_apis
[非推奨] を設定すると、試験運用版に基づいて有効にできます。ここでは、フィールド名「workspace name」が間違っています。代わりに、まったく同じように動作する 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"