argparse/example/main.go

60 lines
1.0 KiB
Go
Raw Normal View History

2020-02-12 09:39:46 +00:00
package main
import (
"fmt"
"log"
2020-02-12 09:39:46 +00:00
"git.trj.tw/golang/argparse"
)
func main() {
fmt.Println("argparse example")
opts := []string{
"-f", "/config.yml",
"-v",
"--port", "3000",
"--float", "1.23",
"-n", "name!!",
"-i", "item1",
"-i", "item2",
"-h",
2020-02-12 09:39:46 +00:00
}
p := argparse.New()
var configPath string
var versionFlag bool
var port int
var floatVal float64
var name *string
var sarr []string
var missReq int
_ = missReq
p.BoolVar(&versionFlag, "v", "version", nil)
p.StringVar(&configPath, "f", "config", nil)
p.IntVar(&port, "p", "port", nil)
p.FloatVar(&floatVal, "ff", "float", nil)
p.StringSliceVar(&sarr, "i", "item", nil)
// uncomment to test required arg missing
// p.IntVar(&missReq, "m", "miss", &argparse.Option{Require: true})
p.Help("h", "help")
name = p.String("n", "name", nil)
err := p.Parse(opts)
if err != nil {
log.Fatal(err)
}
2020-02-12 09:39:46 +00:00
fmt.Printf(
"Config: %s\nVersionFlag: %v\nPort: %d\nFloatVal: %f\nName: %s\nItems: %v\n",
configPath,
versionFlag,
port,
floatVal,
*name,
sarr,
)
2020-02-12 09:39:46 +00:00
}