Golang 커맨드라인 인자 파싱하는 argparse 라이브러리 알아보기

오늘은 Golang에서 커맨드라인에서 프로그램의 인자를 파싱해서 값을 가져오는 argparse 라이브러리를 알아보려 합니다.

argparse 설치

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

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

brew install go

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

sudo apt-get install golang-go

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

go get -u -v github.com/akamensky/argparse

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

예제

package main

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

import (
	"fmt"
	"os"

	"github.com/akamensky/argparse"
)

fmt와 os, 그리고 argparse 패키지를 가져옵니다.

func main() {
	parser := argparse.NewParser("test_program", "test argparse program")

main 함수에 argparse의 NewParser로 새로운 Parser 객체를 만듭니다.

    s := parser.String("v", "value", &argparse.Options{Required: true, Help: "Value to print"})

인자로 String을 받을 수 있습니다.

이 때에 필수로 받아야 될 지 정하는 것과 도움말과 같은 옵션을 적을 수 있습니다.

    f := parser.Flag("b", "bool", &argparse.Options{Required: true, Help: "Bool to print"})

인자로 Bool을 받을 수 있습니다.

이 때에 필수로 받아야 될 지 정하는 것과 도움말과 같은 옵션을 적을 수 있습니다.

    l := parser.List("l", "list", &argparse.Options{Required: true, Help: "List to print"})

인자로 List를 받을 수 있습니다.

이 때에 필수로 받아야 될 지 정하는 것과 도움말과 같은 옵션을 적을 수 있습니다.

    S := parser.Selector("s", "seletor", []string{"PRODUCT", "TEST"}, &argparse.Options{Required: true, Help: "Select to print"})

인자로 Selector를 받을 수 있습니다.

이 때에 필수로 받아야 될 지 정하는 것과 도움말을 적을 수 있습니다.

	F := parser.File("f", "file", os.O_RDWR, 0600, &argparse.Options{Required: true, Help: "File to print"})

인자로 File을 받을 수 있습니다.

이 때에 필수로 받아야 될 지 정하는 것과 도움말과 같은 옵션을 적을 수 있습니다.

	err := parser.Parse(os.Args)
	if err != nil {
		fmt.Print(parser.Usage(err))
    }

Parser 객체에 인자를 가져와서 파싱합니다.

	fmt.Println(*s, *f, *l, *S, *F)
}

마지막으로 파싱한 내용을 출력하여 확인할 수 있습니다.

Written on July 29, 2019