[silence-errors]: adds Silence Usage

This commit is contained in:
Austin Riendeau 2015-10-26 17:38:08 -06:00
parent 03aabcda72
commit 4729b374ae
2 changed files with 6 additions and 1 deletions

View file

@ -220,6 +220,7 @@ func fullSetupTest(input string) resulter {
func noRRSetupTestSilenced(input string) resulter { func noRRSetupTestSilenced(input string) resulter {
c := initialize() c := initialize()
c.SilenceErrors = true c.SilenceErrors = true
c.SilenceUsage = true
return fullTester(c, input) return fullTester(c, input)
} }

View file

@ -63,6 +63,8 @@ type Command struct {
lflags *flag.FlagSet lflags *flag.FlagSet
// SilenceErrors is an option to quiet errors down stream // SilenceErrors is an option to quiet errors down stream
SilenceErrors bool SilenceErrors bool
// Silence Usage is an option to silence usage when an error occurs.
SilenceUsage bool
// The *Run functions are executed in the following order: // The *Run functions are executed in the following order:
// * PersistentPreRun() // * PersistentPreRun()
// * PreRun() // * PreRun()
@ -638,12 +640,14 @@ func (c *Command) Execute() (err error) {
err = cmd.execute(flags) err = cmd.execute(flags)
if err != nil { if err != nil {
// If root is silenced, all subcommands should have the same // If root is silenced, all subcommands should have the same
if !cmd.SilenceUsage && !c.SilenceUsage {
c.Println(cmd.UsageString())
}
if !cmd.SilenceErrors && !c.SilenceErrors { if !cmd.SilenceErrors && !c.SilenceErrors {
if err == flag.ErrHelp { if err == flag.ErrHelp {
cmd.HelpFunc()(cmd, args) cmd.HelpFunc()(cmd, args)
return nil return nil
} }
c.Println(cmd.UsageString())
c.Println("Error:", err.Error()) c.Println("Error:", err.Error())
} }
return err return err