60 lines
1.2 KiB
Go
60 lines
1.2 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, false, "v", "version", "show version", nil)
|
|
p.StringVar(&configPath, "", "f", "config", "", nil)
|
|
p.IntVar(&port, 0, "p", "port", "http listen port", nil)
|
|
p.FloatVar(&floatVal, 1.2, "ff", "float", "float value", nil)
|
|
p.StringSliceVar(&sarr, []string{}, "i", "item", "item list", nil)
|
|
// uncomment to test required arg missing
|
|
// p.IntVar(&missReq, -1, "m", "miss", "require value", &argparse.Option{Require: true})
|
|
p.Help("h", "help")
|
|
|
|
name = p.String("", "n", "name", "show 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,
|
|
)
|
|
}
|