package main import ( "fmt" "io/ioutil" "log" "os" "github.com/DavidGamba/go-getoptions" ) var logger = log.New(ioutil.Discard, "", log.LstdFlags) func main() { config := map[string]string{ "region": "us-east-1", "profile": "default", } opt := getoptions.New() opt.Bool("help", false, opt.Alias("?")) opt.Bool("debug", false) opt.StringMapVar(&config, "config", 1, 99) remaining, err := opt.Parse(os.Args[1:]) if err != nil { fmt.Fprintf(os.Stderr, "ERROR: %s\n", err) os.Exit(1) } if opt.Called("help") { fmt.Fprintln(os.Stderr, opt.Help()) os.Exit(1) } if opt.Called("debug") { logger.SetOutput(os.Stderr) } log.Println(remaining) fmt.Printf("%#v\n", config) }