mirror of
https://github.com/spf13/cobra
synced 2024-11-24 14:47:12 +00:00
Revert "Get rid of flagErrorBuf (#417)"
This reverts commit b655df6ce8
.
Reason for revert: duplicate errors from flag. More in #426
Fix #426
This commit is contained in:
parent
6dd90846ba
commit
3d7bff8a32
1 changed files with 25 additions and 6 deletions
31
command.go
31
command.go
|
@ -114,6 +114,9 @@ type Command struct {
|
||||||
// is commands slice are sorted or not
|
// is commands slice are sorted or not
|
||||||
commandsAreSorted bool
|
commandsAreSorted bool
|
||||||
|
|
||||||
|
// flagErrorBuf contains all error messages from pflag.
|
||||||
|
flagErrorBuf *bytes.Buffer
|
||||||
|
|
||||||
args []string // actual args parsed from flags
|
args []string // actual args parsed from flags
|
||||||
output io.Writer // out writer if set in SetOutput(w)
|
output io.Writer // out writer if set in SetOutput(w)
|
||||||
usageFunc func(*Command) error // Usage can be defined by application
|
usageFunc func(*Command) error // Usage can be defined by application
|
||||||
|
@ -915,6 +918,7 @@ func (c *Command) DebugFlags() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
c.Println(x.flagErrorBuf)
|
||||||
if x.HasSubCommands() {
|
if x.HasSubCommands() {
|
||||||
for _, y := range x.commands {
|
for _, y := range x.commands {
|
||||||
debugflags(y)
|
debugflags(y)
|
||||||
|
@ -1055,7 +1059,10 @@ func (c *Command) GlobalNormalizationFunc() func(f *flag.FlagSet, name string) f
|
||||||
func (c *Command) Flags() *flag.FlagSet {
|
func (c *Command) Flags() *flag.FlagSet {
|
||||||
if c.flags == nil {
|
if c.flags == nil {
|
||||||
c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
||||||
c.flags.SetOutput(c.OutOrStderr())
|
if c.flagErrorBuf == nil {
|
||||||
|
c.flagErrorBuf = new(bytes.Buffer)
|
||||||
|
}
|
||||||
|
c.flags.SetOutput(c.flagErrorBuf)
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.flags
|
return c.flags
|
||||||
|
@ -1080,7 +1087,10 @@ func (c *Command) LocalFlags() *flag.FlagSet {
|
||||||
|
|
||||||
if c.lflags == nil {
|
if c.lflags == nil {
|
||||||
c.lflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
c.lflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
||||||
c.lflags.SetOutput(c.OutOrStderr())
|
if c.flagErrorBuf == nil {
|
||||||
|
c.flagErrorBuf = new(bytes.Buffer)
|
||||||
|
}
|
||||||
|
c.lflags.SetOutput(c.flagErrorBuf)
|
||||||
}
|
}
|
||||||
c.lflags.SortFlags = c.Flags().SortFlags
|
c.lflags.SortFlags = c.Flags().SortFlags
|
||||||
|
|
||||||
|
@ -1100,6 +1110,10 @@ func (c *Command) InheritedFlags() *flag.FlagSet {
|
||||||
|
|
||||||
if c.iflags == nil {
|
if c.iflags == nil {
|
||||||
c.iflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
c.iflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
||||||
|
if c.flagErrorBuf == nil {
|
||||||
|
c.flagErrorBuf = new(bytes.Buffer)
|
||||||
|
}
|
||||||
|
c.iflags.SetOutput(c.flagErrorBuf)
|
||||||
}
|
}
|
||||||
|
|
||||||
local := c.LocalFlags()
|
local := c.LocalFlags()
|
||||||
|
@ -1120,17 +1134,22 @@ func (c *Command) NonInheritedFlags() *flag.FlagSet {
|
||||||
func (c *Command) PersistentFlags() *flag.FlagSet {
|
func (c *Command) PersistentFlags() *flag.FlagSet {
|
||||||
if c.pflags == nil {
|
if c.pflags == nil {
|
||||||
c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
||||||
c.pflags.SetOutput(c.OutOrStderr())
|
if c.flagErrorBuf == nil {
|
||||||
|
c.flagErrorBuf = new(bytes.Buffer)
|
||||||
|
}
|
||||||
|
c.pflags.SetOutput(c.flagErrorBuf)
|
||||||
}
|
}
|
||||||
return c.pflags
|
return c.pflags
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResetFlags is used in testing.
|
// ResetFlags is used in testing.
|
||||||
func (c *Command) ResetFlags() {
|
func (c *Command) ResetFlags() {
|
||||||
|
c.flagErrorBuf = new(bytes.Buffer)
|
||||||
|
c.flagErrorBuf.Reset()
|
||||||
c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
||||||
c.flags.SetOutput(c.OutOrStderr())
|
c.flags.SetOutput(c.flagErrorBuf)
|
||||||
c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
||||||
c.pflags.SetOutput(c.OutOrStderr())
|
c.pflags.SetOutput(c.flagErrorBuf)
|
||||||
}
|
}
|
||||||
|
|
||||||
// HasFlags checks if the command contains any flags (local plus persistent from the entire structure).
|
// HasFlags checks if the command contains any flags (local plus persistent from the entire structure).
|
||||||
|
@ -1229,7 +1248,7 @@ func (c *Command) mergePersistentFlags() {
|
||||||
func (c *Command) updateParentsPflags() {
|
func (c *Command) updateParentsPflags() {
|
||||||
if c.parentsPflags == nil {
|
if c.parentsPflags == nil {
|
||||||
c.parentsPflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
c.parentsPflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
||||||
c.parentsPflags.SetOutput(c.OutOrStderr())
|
c.parentsPflags.SetOutput(c.flagErrorBuf)
|
||||||
c.parentsPflags.SortFlags = false
|
c.parentsPflags.SortFlags = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue