Golang CLI 인자 파싱하는 Kingpin 라이브러리 알아보기

오늘은 Golang에서 플루언트 인터페이스처럼 CLI 인자 파싱하는 Kingpin 라이브러리를 알아보려 합니다.

Kingpin 설치

우선 Golang의 환경을 구성하기 위해 https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받을 수 있습니다.

맥에서 brew로 쉽게 설치할 수 있습니다.

brew install go

우분투에서도 apt로 쉽게 설치할 수 있습니다.

sudo apt-get install golang-go

go get으로 github에서 호스팅되고 있는 Kingpin 패키지를 설치합니다.

go get gopkg.in/alecthomas/kingpin.v2

홈의 go 폴더에 Kingpin 소스코드와 패키지 파일이 생성됩니다.

예제

간단하게 플래그와 인자를 사용할 수 있는 예제를 만들어보려 합니다.

package main

해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언합니다.

import (
	"gopkg.in/alecthomas/kingpin.v2"
)

kingpind을 가져옵니다.

var (
	str = kingpin.Flag("str", "string description").String()

문자열을 플래그로 받을 수 있습니다.

	bool = kingpin.Flag("bool", "bool description").Bool()

논리 타입도 플래드로 받을 수 있습니다.

	duration = kingpin.Flag("duration", "duration description").Required().Short('t').Duration()

반드시 넣여야 될 정보의 인자면 Required를 부여할 수 있습니다.

	ip = kingpin.Arg("ip", "IP description").Required().IP()

IP 형식의 문자열도 인자로 받을 수 있습니다.

	url = kingpin.Arg("url", "url description").Required().URL()

URL 형식의 문자열도 인자로 받을 수 있습니다.

	number = kingpin.Arg("int", "int description").Int()
)

위 문자열과 마찬가지로 정수도 인자로 받을 수 있습니다.

func main() {
	kingpin.Version("0.0.1")
	kingpin.Parse()
}

이제 메인 함수에서 인자를 파싱하고, 작성한 go 파일을 실행합니다.

Written on August 1, 2019