Do not return error when flag parsing should be skipped
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
This commit is contained in:
parent
70e3fa51eb
commit
c538c376c9
@ -102,6 +102,12 @@ func (c Command) Run(ctx *Context) error {
|
||||
err = set.Parse(append(flagArgs, regularArgs...))
|
||||
} else {
|
||||
err = set.Parse(ctx.Args().Tail())
|
||||
|
||||
// Work around issue where if the first arg in ctx.Args.Tail()
|
||||
// is a flag, set.Parse returns an error
|
||||
if c.SkipFlagParsing {
|
||||
err = nil
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
@ -45,3 +45,25 @@ func TestCommandIgnoreFlags(t *testing.T) {
|
||||
|
||||
expect(t, err, nil)
|
||||
}
|
||||
|
||||
// Fix bug with ignoring flag parsing that would still parse the first flag
|
||||
func TestCommandIgnoreFlagsIncludingFirstArgument(t *testing.T) {
|
||||
app := NewApp()
|
||||
set := flag.NewFlagSet("test", 0)
|
||||
test := []string{"blah", "-break"}
|
||||
set.Parse(test)
|
||||
|
||||
c := NewContext(app, set, nil)
|
||||
|
||||
command := Command{
|
||||
Name: "test-cmd",
|
||||
Aliases: []string{"tc"},
|
||||
Usage: "this is for testing",
|
||||
Description: "testing",
|
||||
Action: func(_ *Context) {},
|
||||
SkipFlagParsing: true,
|
||||
}
|
||||
err := command.Run(c)
|
||||
|
||||
expect(t, err, nil)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user