package app import ( "github.com/jessevdk/go-flags" "os" ) type ParserWrapper struct { parser *flags.Parser } func NewParserWrapper() *ParserWrapper { return &ParserWrapper{parser: flags.NewParser(nil, flags.Default)} } func (w *ParserWrapper) AddCommand(name, description string, cmd flags.Commander) { _, err := w.parser.AddCommand(name, description, "", cmd) if err != nil { panic(err) } } func (w *ParserWrapper) Run() { if _, err := w.parser.Parse(); err != nil { if flagsErr, ok := err.(*flags.Error); ok && flagsErr.Type == flags.ErrHelp { os.Exit(0) } else { os.Exit(1) } } }