argp - Go용 GNU 스타일 커맨드라인 인자 파서
(github.com/tdewolff)./test -vo out.png --size 256 input.txt같은 GNU 표준을 따르는 명령줄 인자 파서-h및--help로 내장된 도움말 메시지 제공- 태그 설정으로 구조체 필드에 인자 매핑
- 배열, 슬라이스, 구조체 같은 복합 타입 필드 지원
- 중첩된 서브 명령 지원
GNU 명령줄 인자 규칙
- 하이픈(
-)으로 시작하는 항목은 옵션임 - 여러 옵션은 결합 가능 (
-abc는-a -b -c와 동일함) - 긴 옵션은 두 개의 하이픈(
--)으로 시작 (--abc) - 옵션 이름은 영숫자만 가능
- 옵션 값은 공백, 등호(
=), 또는 연속된 값으로 설정 가능 (-a1,-a=1,-a 1모두 동일) - 옵션과 비옵션 값은 섞여도 문제 없음
- 옵션은 어떤 순서로든 나타날 수 있음.
--는 옵션 종료 의미로 이후 인자는 모두 비옵션으로 처리- 단일
-는 일반적으로 표준 입력 또는 출력을 의미 - 동일 옵션이 여러 번 지정되면 마지막 값이 적용됨
- 옵션은 여러 개의 값을 가질 수 있음 (
-a 1 2 3은[1,2,3]으로 처리됨)
추가 기능
- 옵션 카운팅:
-vvv는v = 3으로 설정됨 - 옵션 추가:
-v 1 -v 2는v = []int{1, 2}로 설정됨 - 불리언 옵션:
--var는 활성화하고--no-var는 비활성화함 - 옵션은 구조체, 슬라이스, 맵과 같은 복합 타입이 될 수 있음
- 옵션은 소스(예: SQL)에서 목록/딕셔너리 값을 가져올 수 있음