Đố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í đến 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 theo góc nhìn của kho lưu trữ chính nếu có thể.
Hội viên
Nhãn
Label Label(input)
Label, trong bối 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 bối cảnh của gói hiện đang được tạo. Đối với các hàm triển khai khía cạnh và quy tắc, ctx.package_relative_label() có thể được sử dụng cho cùng mục đích. Hãy sử dụng các hàm này để mô phỏng quá trình chuyển đổi chuỗi thành nhãn được thực hiện tự động theo 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. |
tên
string Label.name
Label("@@foo//pkg/foo:abc").name == "abc"gói hàng
string Label.package
Label("@@repo//pkg/foo:abc").package == "pkg/foo"có liên quan
Label Label.relative(relName)
--+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 dùng
Label.same_package_label(), native.package_relative_label(), ctx.package_relative_label() hoặc Label().Phân giải 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 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 ghi lại nếu có trong quá trình á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 quá trình á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
|
chuỗi;
bắt buộc Nhãn sẽ được phân giải tương ứng với nhãn này. |
repo_name
string Label.repo_name
@). Ví dụ: Label("@@foo//bar:baz").repo_name == "foo"same_package_label
Label Label.same_package_label(target_name)
Thông số
| Tham số | Mô tả |
|---|---|
target_name
|
chuỗi;
bắt buộc Tên mục tiêu của nhãn mới. |
workspace_name
string Label.workspace_name
--+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 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
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"