Nhãn

Báo cáo vấn đề Xem nguồn /3}·21}

Giá trị nhận dạng mục tiêu BUILD.

Mọi thực thể Label l, biểu diễn chuỗi str(l) đều có thuộc tính là Label(str(l)) == l, bất kể lệnh gọi Label() xảy ra ở đâu.

Hội viên

Hãng nhạc

Label Label(input)

Chuyển đổi chuỗi nhãn thành đối tượng Label, trong ngữ cảnh của gói có tệp nguồn .bzl gọi. Nếu giá trị đã cho đã là Label, thì giá trị này sẽ không thay đổi.

Đối với macro, một hàm có liên quan là native.package_relative_label() sẽ chuyển đổi đầu vào thành Label trong bối cảnh gói hiện đang được tạo dựng. Sử dụng hàm đó để bắt chước hành động chuyển đổi từ chuỗi sang nhãn được thực hiện tự động bằng các thuộc tính quy tắc có giá trị nhãn.

Tham số

Thông số Nội dung mô tả
input string; hoặc Label; bắt buộc
Chuỗi nhãn đầu vào hoặc đối tượng Nhãn. Nếu một đối tượng Nhãn được truyền, đối tượng đó sẽ được trả về nguyên trạng.

tên

string Label.name

Tên của mục tiêu được nhãn này tham chiếu. Ví dụ:
Label("@@foo//pkg/foo:abc").name == "abc"

gói hàng

string Label.package

Tên của gói chứa mục tiêu được nhãn này tham chiếu, không có tên kho lưu trữ. Ví dụ:
Label("@@repo//pkg/foo:abc").package == "pkg/foo"

relative

Label Label.relative(relName)

Thử nghiệm. API này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng đừng phụ thuộc vào tính năng này. Bạn có thể bật tính năng này trên cơ sở thử nghiệm bằng cách đặt --+incompatible_enable_deprecated_label_apis
Không dùng nữa. Phương thức này hoạt động đáng kinh ngạc khi được sử dụng với một đối số có chứa tên kho lưu trữ rõ ràng. Ưu tiên Label.same_package_label(), native.package_relative_label() hoặc Label().

Phân giải một nhãn có giá trị tuyệt đối (bắt đầu bằng //) hoặc tương đối so với gói hiện tại. Nếu nhãn này nằm trong một kho lưu trữ từ xa, thì đối số sẽ được phân giải tương ứng với kho lưu trữ đó. Nếu đối số chứa tên kho lưu trữ, thì nhãn hiện tại sẽ bị bỏ qua và đối số được trả về nguyên trạng, ngoại trừ việc tên kho lưu trữ được viết lại nếu nằm trong mối liên kết kho lưu trữ hiện tại. Các nhãn dành riêng cũng sẽ được trả về theo nguyên trạng.
Ví dụ:

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")

Nếu mối liên kết kho lưu trữ được truyền vào là {'@other' : '@remapped'}, thì quá trình ánh xạ lại sau đây sẽ diễn ra:

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

Tham số

Thông số Nội dung mô tả
relName bắt buộc
Nhãn sẽ được giải quyết liên quan đến nhãn này.

repo_name

string Label.repo_name

Tên chuẩn hoá của kho lưu trữ chứa mục tiêu được nhãn này tham chiếu đến mà không có bất kỳ ký hiệu @ nào ở đầu (@). Ví dụ:
Label("@@foo//bar:baz").repo_name == "foo"

same_package_label

Label Label.same_package_label(target_name)

Tạo một nhãn trong cùng một gói như nhãn này bằng tên mục tiêu đã cho.

Tham số

Thông số Nội dung mô tả
target_name bắt buộc
Tên mục tiêu của nhãn mới.

workspace_name

string Label.workspace_name

Thử nghiệm. API này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng đừng phụ thuộc vào tính năng này. Bạn có thể bật tính năng này trên cơ sở thử nghiệm bằng cách đặt --+incompatible_enable_deprecated_label_apis
Không dùng nữa. Trong trường hợp này, tên trường "tên không gian làm việc" bị sử dụng sai. Hãy sử dụng Label.repo_name có hành vi giống hệt nhau.

Tên chuẩn hoá của kho lưu trữ chứa mục tiêu được nhãn này tham chiếu đến mà không có bất kỳ ký hiệu @ nào ở đầu (@). Ví dụ:

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

workspace_root

string Label.workspace_root

Trả về gốc thực thi cho kho lưu trữ chứa mục tiêu được nhãn này tham chiếu, so với execroot. Ví dụ:
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"