본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

posh-dynargs

0

posh-dynargs는 PowerShell 모듈로, 프로젝트별로 인수가 변하는 명령어에 대한 탭 완성을 가능하게 합니다.

개발 도구명령어 보완모듈탭 완성

소개

posh-dynargs는 PowerShell 모듈로, 프로젝트별로 인수가 변하는 명령어에 대한 탭 완성을 가능하게 합니다. tygerbytes에서 개발했으며, .argument-completer-registry.json 파일을 통해 명령어와 인수 매핑을 정의하면 동적으로 탭 완성을 제공합니다. 또한 헬퍼 함수를 생성하여 명령어 실행 시 로깅, 타이밍, 알림 기능을 선택적으로 사용할 수 있습니다.

상세정보

탭 완성

posh-dynargs는 등록된 명령어에 대해 인수를 동적으로 파싱하여 탭 완성을 지원합니다. Cake, PSake, Make 스크립트처럼 알려진 유형은 자동으로 인수를 추출하고, 커스텀 스크립트나 바이너리 명령어는 정규식이나 --help 출력을 통해 인수를 파악합니다. 인수 목록은 명령어가 호출될 때마다 최신 상태로 유지됩니다.

헬퍼 함수

등록된 각 명령어에 대해 동일 이름의 헬퍼 함수가 생성되어, . 또는 ./ 프리픽스 없이 명령어를 직접 실행할 수 있습니다. 이 헬퍼 함수는 funcDefaults 설정을 통해 다음과 같은 부가 기능을 선택적으로 활성화할 수 있습니다:

  • 명령어 출력 로깅 (색상은 손실됨)
  • 명령어 완료 시 음성 알림
  • 경과 시간 표시
  • 전역 PATH에서 명령어 탐색

다운로드·설치 방법

공식적으로 Chocolatey를 통한 설치를 권장합니다. 먼저 Chocolatey가 설치되어 있어야 하며, 설치되지 않았다면 Chocolatey 설치 페이지를 참조하세요. Chocolatey가 준비되면 PowerShell에서 다음 명령을 차례로 실행합니다:

choco install poshdynargs
Import-Module posh-dynargs
Add-PoshDynargsToProfile

이 과정을 마치면 posh-dynargs가 모든 PowerShell 세션에서 자동으로 로드됩니다.

기본 사용법/명령어

설치 후 프로젝트 루트에 .argument-completer-registry.json 파일을 만들어야 합니다. 이 파일은 JSON 형식으로 completableCommands 배열을 포함하며, 각 항목은 다음과 같은 속성을 가집니다:

  • name: 탭 완성을 활성화할 명령어 이름 (예: "build")
  • argsPath: 인수가 포함된 스크립트 또는 파일의 상대 경로 (예: "./build/ci.cake")
  • type: 스크립트 유형 ("cake", "make", "psake", 또는 커스텀 시 "custom")
  • helpCommand (custom 유형 필수 시): 바이너리 명령어의 인수를 추출하기 위한 도움말 명령 (예: "--help")
  • regex (custom 유형 필수): 인수에서 작업 이름을 추출하는 정규식 (첫 번째 캡처 그룹이 작업 이름이어야 함)
  • funcDefaults: 헬퍼 함수의 기본 동작 설정 (logOutput, talk, useTimer, useGlobal 중 선택)

예시:

{
    "completableCommands": [
        {
            "name": "build",
            "argsPath": "./build/ci.cake",
            "type": "cake",
            "funcDefaults": {
                "logOutput": true,
                "talk": true,
                "useTimer": true
            }
        }
    ]
}

파일을 저장한 후 해당 디렉터리에서 PowerShell을 새로 고치면 탭 완성이 즉시 작동합니다.

이런 경우에 유용합니다

여러 프로젝트를 오가며 각각 다른 빌드 명령어 (예: build, test, ci)를 사용하는 개발자에게 유용합니다. 프로젝트마다 인수가 다르거나 자주 변경될 때, 매번 인수를 기억하거나 문서를 찾아볼 필요 없이 탭 키만으로 가능한 옵션을 확인할 수 있습니다. 특히 CI 스크립트나 커스텀 빌드 도구를 사용하는 워크플로에서 명령어 탐색 오류를 줄이고 작업 효율을 높일 수 있습니다.

지원 환경·시스템 요구사항

이 모듈은 Windows PowerShell 5.1 이상 및 PowerShell 7에서 실행됩니다. Chocolatey를 통한 설치를 가정하며, PowerShell 스크립트 실행 정책이 RemoteSigned 이상이어야 정상적으로 가져올 수 있습니다.

최신 버전·업데이트

현재 버전은 0.1.0.5이며, 2019년 4월 26일에 마지막으로 업데이트되었습니다. 추가 기능이나 breaking change가 포함된 공식적인 변경 로그는 공개되지 않았습니다.

제한 사항·확인 사항

PowerShell의 알려진 버그로 인해, 선행 대시(-)가 있는 인수 (예: build -stuff)는 탭 완성이 되지 않습니다. 이 문제를 우회하기 위해 posh-dynargs는 인수 앞에 콜론을 붙이는 방식(build :-stuff)을 사용하도록 권장하며, 헬퍼 함수가 자동으로 콜론을 제거합니다. 이 방법은 이상적이지 않으며, upstream PowerShell 버그 수정이 필요합니다.

또한, helpCommand를 통해 바이너리 명령어의 인수를 추출할 때는 보안 위험이 존재합니다. 등록된 명령어만 실행 가능하도록 제한하고, --help, -h, --list 등 안전한 인수 집합으로 제한하며, 실행 전 사용자에게 “yes” 입력을 요구하는 확인 프롬프트를 표시하여 무의식적인 실행을 방지합니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.