Remove some wonky error handling, as upstream seems correct now.

Also, it's buggy for nested commands.
This commit is contained in:
Brendan Burns 2015-03-11 10:22:30 -07:00 committed by spf13
parent f479c924b8
commit 9e7273d546
1 changed files with 17 additions and 6 deletions

View File

@ -262,8 +262,12 @@ func isBooleanFlag(name string, f *flag.FlagSet) bool {
// Test if the named flag is a boolean flag. // Test if the named flag is a boolean flag.
func isBooleanShortFlag(name string, f *flag.FlagSet) bool { func isBooleanShortFlag(name string, f *flag.FlagSet) bool {
result := false result := false
f.VisitAll(func (f *flag.Flag) { if f.Shorthand == name && f.Value.Type() == "bool" { result = true } }) f.VisitAll(func(f *flag.Flag) {
if f.Shorthand == name && f.Value.Type() == "bool" {
result = true
}
})
return result return result
} }
@ -399,7 +403,10 @@ func (c *Command) execute(a []string) (err error) {
} }
err = c.ParseFlags(a) err = c.ParseFlags(a)
if err == flag.ErrHelp {
c.Help()
return nil
}
if err != nil { if err != nil {
// We're writing subcommand usage to root command's error buffer to have it displayed to the user // We're writing subcommand usage to root command's error buffer to have it displayed to the user
r := c.Root() r := c.Root()
@ -519,9 +526,13 @@ func (c *Command) Execute() (err error) {
} }
if err != nil { if err != nil {
c.Println("Error:", err.Error()) if err == flag.ErrHelp {
c.Printf("%v: invalid command %#q\n", c.Root().Name(), os.Args[1:]) c.Help()
c.Printf("Run '%v help' for usage\n", c.Root().Name()) } else {
c.Println("Error:", err.Error())
c.Printf("%v: invalid command %#q\n", c.Root().Name(), os.Args[1:])
c.Printf("Run '%v help' for usage\n", c.Root().Name())
}
} }
return return