본문 바로가기
REZ/ADVACED

Plugins

by 르면가게 2024. 12. 24.

Rez의 플러그인 (Plugins)

Rez는 플러그인 구조를 통해 기능을 확장할 수 있도록 설계되었습니다. 플러그인을 사용하면 Rez의 소스 코드를 수정하지 않고도 새로운 기능을 추가할 수 있습니다.


기본 제공 플러그인

Rez는 다양한 내장 플러그인을 제공합니다. 예를 들어:

  • 빌드 프로세스: 로컬 및 원격 호스트에서 패키지 빌드.
  • 빌드 시스템: cmake, make와 같은 시스템 지원.
  • 패키지 저장소: 파일 시스템 기반, 메모리 기반 저장소.
  • 릴리스 후크: 이메일 알림, 메시지 브로커 통합.
  • 버전 관리 시스템: Git, Mercurial, Subversion 등.
  • 쉘 환경: PowerShell, Git Bash, Command Prompt 등.

설치된 플러그인 확인:

$ rez -i

출력 결과는 플러그인 이름, 유형, 상태 등을 보여줍니다.


플러그인 구성

플러그인은 rezconfig.py 파일에 plugins 키를 추가하여 구성할 수 있습니다:

plugins = {
    "filesystem": {}
}

플러그인 유형

Rez에서 지원하는 주요 플러그인 유형:


플러그인 개발

사용자 정의 플러그인을 개발하려면 다음 디렉토리 구조를 따라야 합니다:

/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