Go to file
Alex Flint 6582088596 udpate readme 2015-10-31 18:49:20 -07:00
example udpate readme 2015-10-31 18:48:38 -07:00
.gitignore Initial commit 2015-10-31 18:30:06 -07:00
LICENSE Initial commit 2015-10-31 18:30:06 -07:00
README.md udpate readme 2015-10-31 18:49:20 -07:00
parse.go udpate readme 2015-10-31 18:48:38 -07:00
parse_test.go added usage generation 2015-10-31 18:26:58 -07:00
usage.go udpate readme 2015-10-31 18:48:38 -07:00

README.md

Argument parsing for Go

import "github.com/alexflint/go-arg"

var args struct {
	Foo  string
	Bar  bool
}
arg.MustParse(&args)
fmt.Println(args.Foo, args.Bar)
$ ./example --foo=hello --bar
hello True

Default values

var args struct {
	Foo string
	Bar bool
}
args.Foo = "default value"
arg.MustParse(&args)

Marking options as required

var args struct {
	Foo string `arg:"required"`
	Bar bool
}
arg.MustParse(&args)

Positional argument

var args struct {
	Input   string   `arg:"positional"`
	Output  []string `arg:"positional"`
	Verbose bool
}
arg.MustParse(&args)
fmt.Println("Input:", input)
fmt.Println("Output:", output)
$ ./example src.txt x.out y.out z.out
Input: src.txt
Output: [x.out y.out z.out]

Usage strings

$ ./example -h
usage: [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] [--help] INPUT [OUTPUT [OUTPUT ...]] 

positional arguments:
  input
  output

options:
--verbose, -v            verbosity level
--dataset DATASET        dataset to use
--optimize OPTIMIZE, -O OPTIMIZE
                         optimization level
--help, -h               print this help message

Options with multiple values

var args struct {
	Database string
	IDs      []int64
}
arg.MustParse(&args)
fmt.Printf("Fetching the following IDs from %s: %q", args.Database, args.IDs)
./example -database foo -ids 1 2 3
Fetching the following IDs from foo: [1 2 3]