라벨

문제 신고 소스 보기

빌드 대상 식별자입니다.

모든 Label 인스턴스 l의 경우 문자열 표현 str(l)에는 Label() 호출이 발생하는 위치와 관계없이 Label(str(l)) == l 속성이 있습니다.

구성원

라벨

Label Label(input)

호출 .bzl 소스 파일이 있는 패키지의 컨텍스트에서 라벨 문자열을 Label 객체로 변환합니다. 지정된 값이 이미 Label이면 변경되지 않은 상태로 반환됩니다.

매크로의 경우 관련 함수 native.package_relative_label()는 현재 구성 중인 패키지의 컨텍스트에서 입력을 Label로 변환합니다. 이 함수를 사용하면 라벨 값이 지정된 규칙 속성에 의해 자동으로 수행되는 문자열에서 라벨로의 변환을 모방할 수 있습니다.

매개변수

매개변수 설명
input string 또는 Label, 필수
입력 라벨 문자열 또는 라벨 객체입니다. Label 객체가 전달되면 있는 그대로 반환됩니다.

이름

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 필수
이 라벨을 기준으로 확인될 라벨입니다.

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"