소개
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” 입력을 요구하는 확인 프롬프트를 표시하여 무의식적인 실행을 방지합니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


