Nhãn

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

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

Khi được truyền dưới dạng đối số vị trí cho print() hoặc fail(), Label sẽ sử dụng một biểu diễn chuỗi được tối ưu hoá để con người dễ đọc hơn. Biểu diễn này sử dụng tên kho lưu trữ rõ ràng từ góc độ của kho lưu trữ chính nếu có thể.

Hội viên

Nhãn

Label Label(input)

Chuyển đổi một chuỗi nhãn thành đối tượng Label trong ngữ cảnh của gói chứa tệp nguồn .bzl đang gọi. Nếu giá trị đã cho là Label, thì giá trị đó sẽ được trả về nguyên trạng.

Đối với macro, một hàm liên quan là native.package_relative_label() sẽ chuyển đổi dữ liệu đầu vào thành Label trong ngữ cảnh của gói đang được tạo. Hãy sử dụng hàm đó để mô phỏng quá trình 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.

Thông số

Tham số Mô tả
input chuỗi; hoặc Nhãn; 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, thì đối tượng đó sẽ được trả về nguyên trạng.

name

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"

có liên quan

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 không phụ thuộc vào API này. Bạn có thể bật API 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 một cách đáng ngạc nhiên khi được dùng với một đối số chứa tên kho lưu trữ rõ ràng. Thay vào đó, hãy ưu tiên Label.same_package_label(), native.package_relative_label() hoặc Label().

Giải quyết một nhãn tuyệt đối (bắt đầu bằng //) hoặc tương đối 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 giải quyết 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 ánh xạ kho lưu trữ hiện tại. Các nhãn dành riêng cũng sẽ được trả về 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 ánh xạ 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")

Thông số

Tham số Mô tả
relName bắt buộc
Nhãn sẽ được giải quyết tương ứng với nhãn này.

repo_name

string Label.repo_name

Tên chính tắc của kho lưu trữ chứa mục tiêu được nhãn này tham chiếu, không có dấu @ (@) ở đầ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 gói với nhãn này bằng tên mục tiêu đã cho.

Thông số

Tham số 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 không phụ thuộc vào API này. Bạn có thể bật API 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. Tên trường "tên không gian làm việc" là một tên gọi sai ở đây; thay vào đó, hãy sử dụng Label.repo_name có hành vi giống hệt.

Tên chính tắc của kho lưu trữ chứa mục tiêu được nhãn này tham chiếu, không có dấu @ (@) ở đầu. Ví dụ:

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

workspace_root

string Label.workspace_root

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