60 lines
1.0 KiB
Go
60 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"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",
|
|
}
|
|
|
|
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)
|
|
}
|
|
|
|
fmt.Printf(
|
|
"Config: %s\nVersionFlag: %v\nPort: %d\nFloatVal: %f\nName: %s\nItems: %v\n",
|
|
configPath,
|
|
versionFlag,
|
|
port,
|
|
floatVal,
|
|
*name,
|
|
sarr,
|
|
)
|
|
}
|