Rez의 플러그인 (Plugins)
Rez는 플러그인 구조를 통해 기능을 확장할 수 있도록 설계되었습니다. 플러그인을 사용하면 Rez의 소스 코드를 수정하지 않고도 새로운 기능을 추가할 수 있습니다.
기본 제공 플러그인
Rez는 다양한 내장 플러그인을 제공합니다. 예를 들어:
- 빌드 프로세스: 로컬 및 원격 호스트에서 패키지 빌드.
- 빌드 시스템: cmake, make와 같은 시스템 지원.
- 패키지 저장소: 파일 시스템 기반, 메모리 기반 저장소.
- 릴리스 후크: 이메일 알림, 메시지 브로커 통합.
- 버전 관리 시스템: Git, Mercurial, Subversion 등.
- 쉘 환경: PowerShell, Git Bash, Command Prompt 등.
설치된 플러그인 확인:
$ rez -i
출력 결과는 플러그인 이름, 유형, 상태 등을 보여줍니다.
플러그인 구성
플러그인은 rezconfig.py 파일에 plugins 키를 추가하여 구성할 수 있습니다:
plugins = {
"filesystem": {}
}
플러그인 유형
Rez에서 지원하는 주요 플러그인 유형:
- build_process: 빌드 프로세스 관련.
- build_system: 특정 빌드 시스템 지원.
- package_repository: 패키지 저장소 관리.
- release_hook: 릴리스 후 특정 동작 수행.
- release_vcs: 버전 관리 시스템 통합.
- shell: 명령줄 인터페이스.
플러그인 개발
사용자 정의 플러그인을 개발하려면 다음 디렉토리 구조를 따라야 합니다:
/plugin_type
/__init__.py (필수: 플러그인 경로 등록)
/plugin_file1.py (플러그인 구현)
/plugin_file2.py (필요 시 추가 구현)
플러그인을 Rez에서 사용하려면:
- 플러그인을 Rez의 src/rezplugins에 추가하거나,
- 플러그인 경로를 REZ_PLUGIN_PATH 환경 변수에 추가.
하위 명령어 등록
플러그인은 Rez에 새로운 **하위 명령어(subcommand)**를 제공할 수 있습니다:
- 플러그인 모듈에 아래 항목을 포함해야 함:
- docstring: 명령어 도움말로 사용.
- setup_parser() 함수: 명령어 인자 정의.
- command() 함수: 명령어 실행 로직.
- register_plugin() 함수: 플러그인 등록.
예시:
# foo.py
"""플러그인 명령어 도움말"""
from rez.command import Command
def setup_parser(parser, completions=False):
parser.add_argument("--hello", ...)
def command(opts, parser=None, extra_arg_groups=None):
if opts.hello:
print("world")
def register_plugin():
return CommandFoo
'REZ > ADVACED' 카테고리의 다른 글
Pip (0) | 2024.12.24 |
---|---|
Resolve Caching (0) | 2024.12.24 |
Managing packages (0) | 2024.12.24 |
Suites (0) | 2024.12.24 |
Context bundles (0) | 2024.12.24 |