go-flagsでサブコマンド実装
追記:2019/7/21
go-flagsはもう使っていない
code:golang
package main
import (
"fmt"
"log"
"os"
flags "github.com/jessevdk/go-flags"
)
type options struct {
num int short:"n" long:"num" description:"test"
}
type subcommand struct {
verbose bool short:"v" long:"verbose"
}
func (cmd *subcommand) Execute(args []string) error {
fmt.Println("subcommand execute")
return nil
}
var opts options // global option
var parser = flags.NewParser(&opts, flags.Default)
var subcmd subcommand
func init() {
parser.AddCommand("subcmd",
"subcommand",
"",
&subcmd,
)
}
func main() {
if _, err := parser.Parse(); err != nil {
if fe, ok := err.(*flags.Error); ok && fe.Type == flags.ErrHelp {
os.Exit(0)
}
log.Print(err)
os.Exit(1)
}
}
参考