빌드 타겟 식별자입니다.
모든 Label
인스턴스 l
에 대해 문자열 표현 str(l)
에는 Label()
호출이 어디에서 발생하든 Label(str(l)) == l
속성이 있습니다.
print()
또는 fail()
에 위치 인수로 전달되면 Label
는 대신 사람이 읽을 수 있도록 최적화된 문자열 표현을 사용합니다. 이 표현은 가능한 경우 기본 저장소의 관점에서 명시적 저장소 이름을 사용합니다.
회원
라벨
Label Label(input)
.bzl
소스 파일이 있는 패키지의 컨텍스트에서 라벨 문자열을 Label
객체로 변환합니다. 지정된 값이 이미 Label
인 경우 변경되지 않은 상태로 반환됩니다.매크로의 경우 관련 함수인 native.package_relative_label()
이 현재 생성 중인 패키지의 컨텍스트에서 입력을 Label
로 변환합니다. 이 함수를 사용하여 라벨 값 규칙 속성에 의해 자동으로 실행되는 문자열-라벨 변환을 모방합니다.
매개변수
매개변수 | 설명 |
---|---|
input
|
string 또는 Label;
required 입력 라벨 문자열 또는 Label 객체입니다. Label 객체가 전달되면 그대로 반환됩니다. |
이름
string Label.name
Label("@@foo//pkg/foo:abc").name == "abc"
패키지
string Label.package
Label("@@repo//pkg/foo:abc").package == "pkg/foo"
상대
Label Label.relative(relName)
--+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
|
string;
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
|
string;
required 새 라벨의 타겟 이름입니다. |
workspace_name
string Label.workspace_name
--+incompatible_enable_deprecated_label_apis
지원 중단됨을 설정하여 실험적으로 사용 설정할 수 있습니다. 여기서 '워크스페이스 이름' 필드 이름은 잘못된 이름입니다. 대신 동일하게 작동하는
Label.repo_name
을 사용하세요.이 라벨이 참조하는 타겟을 포함하는 저장소의 표준 이름입니다. 앞에 오는 at 기호 (@
)는 없습니다. 예를 들면 다음과 같습니다.
Label("@@foo//bar:baz").workspace_name == "foo"
workspace_root
string Label.workspace_root
Label("@repo//pkg/foo:abc").workspace_root == "external/repo"