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 (
"bytes"
"fmt"
"github.com/inconshreveable/mousetrap"
flag "github.com/spf13/pflag"
"io"
"os"
"runtime"
"strings"
"time"
"github.com/inconshreveable/mousetrap"
flag "github.com/spf13/pflag"
)
// Command is just that, a command for your application.
@ -790,6 +791,13 @@ func (c *Command) HasParent() bool {
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)
func (c *Command) Flags() *flag.FlagSet {
if c.flags == nil {
@ -798,7 +806,7 @@ func (c *Command) Flags() *flag.FlagSet {
c.flagErrorBuf = new(bytes.Buffer)
}
c.flags.SetOutput(c.flagErrorBuf)
c.PersistentFlags().BoolVarP(&c.helpFlagVal, "help", "h", false, "help for "+c.Name())
c.assureHelpFlag()
}
return c.flags
}
@ -934,7 +942,9 @@ func (c *Command) mergePersistentFlags() {
}
c.lflags.SetOutput(c.flagErrorBuf)
addtolocal := func(f *flag.Flag) {
c.lflags.AddFlag(f)
if c.lflags.Lookup(f.Name) == nil {
c.lflags.AddFlag(f)
}
}
c.Flags().VisitAll(addtolocal)
c.PersistentFlags().VisitAll(addtolocal)