This commit is contained in:
Fabiano Franz 2015-04-07 19:24:53 +00:00
commit eef7a86b0f

View file

@ -18,13 +18,14 @@ package cobra
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"github.com/inconshreveable/mousetrap"
flag "github.com/spf13/pflag"
"io" "io"
"os" "os"
"runtime" "runtime"
"strings" "strings"
"time" "time"
"github.com/inconshreveable/mousetrap"
flag "github.com/spf13/pflag"
) )
// Command is just that, a command for your application. // Command is just that, a command for your application.
@ -790,6 +791,13 @@ func (c *Command) HasParent() bool {
return c.parent != nil return c.parent != nil
} }
func (c *Command) assureHelpFlag() {
if c.Flags().Lookup("help") == nil && c.PersistentFlags().Lookup("help") == nil {
c.PersistentFlags().BoolVarP(&c.helpFlagVal, "help", "h", false, "help for "+c.Name())
}
c.mergePersistentFlags()
}
// Get the complete FlagSet that applies to this command (local and persistent declared here and by all parents) // Get the complete FlagSet that applies to this command (local and persistent declared here and by all parents)
func (c *Command) Flags() *flag.FlagSet { func (c *Command) Flags() *flag.FlagSet {
if c.flags == nil { if c.flags == nil {
@ -798,7 +806,7 @@ func (c *Command) Flags() *flag.FlagSet {
c.flagErrorBuf = new(bytes.Buffer) c.flagErrorBuf = new(bytes.Buffer)
} }
c.flags.SetOutput(c.flagErrorBuf) c.flags.SetOutput(c.flagErrorBuf)
c.PersistentFlags().BoolVarP(&c.helpFlagVal, "help", "h", false, "help for "+c.Name()) c.assureHelpFlag()
} }
return c.flags return c.flags
} }
@ -934,8 +942,10 @@ func (c *Command) mergePersistentFlags() {
} }
c.lflags.SetOutput(c.flagErrorBuf) c.lflags.SetOutput(c.flagErrorBuf)
addtolocal := func(f *flag.Flag) { addtolocal := func(f *flag.Flag) {
if c.lflags.Lookup(f.Name) == nil {
c.lflags.AddFlag(f) c.lflags.AddFlag(f)
} }
}
c.Flags().VisitAll(addtolocal) c.Flags().VisitAll(addtolocal)
c.PersistentFlags().VisitAll(addtolocal) c.PersistentFlags().VisitAll(addtolocal)
} }