Merge branch 'main' into issue_1550
This commit is contained in:
commit
a0343df736
22
app.go
22
app.go
@ -113,6 +113,11 @@ type App struct {
|
||||
UseShortOptionHandling bool
|
||||
// Enable suggestions for commands and flags
|
||||
Suggest bool
|
||||
// Allows global flags set by libraries which use flag.XXXVar(...) directly
|
||||
// to be parsed through this library
|
||||
AllowExtFlags bool
|
||||
// Treat all flags as normal arguments if true
|
||||
SkipFlagParsing bool
|
||||
|
||||
didSetup bool
|
||||
|
||||
@ -199,13 +204,15 @@ func (a *App) Setup() {
|
||||
a.ErrWriter = os.Stderr
|
||||
}
|
||||
|
||||
// add global flags added by other packages
|
||||
flag.VisitAll(func(f *flag.Flag) {
|
||||
// skip test flags
|
||||
if !strings.HasPrefix(f.Name, ignoreFlagPrefix) {
|
||||
a.Flags = append(a.Flags, &extFlag{f})
|
||||
}
|
||||
})
|
||||
if a.AllowExtFlags {
|
||||
// add global flags added by other packages
|
||||
flag.VisitAll(func(f *flag.Flag) {
|
||||
// skip test flags
|
||||
if !strings.HasPrefix(f.Name, ignoreFlagPrefix) {
|
||||
a.Flags = append(a.Flags, &extFlag{f})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
var newCommands []*Command
|
||||
|
||||
@ -280,6 +287,7 @@ func (a *App) newRootCommand() *Command {
|
||||
HelpName: a.HelpName,
|
||||
CustomHelpTemplate: a.CustomAppHelpTemplate,
|
||||
categories: a.categories,
|
||||
SkipFlagParsing: a.SkipFlagParsing,
|
||||
isRoot: true,
|
||||
}
|
||||
}
|
||||
|
41
app_test.go
41
app_test.go
@ -654,6 +654,7 @@ func TestApp_FlagsFromExtPackage(t *testing.T) {
|
||||
}()
|
||||
|
||||
a := &App{
|
||||
AllowExtFlags: true,
|
||||
Flags: []Flag{
|
||||
&StringFlag{
|
||||
Name: "carly",
|
||||
@ -677,6 +678,28 @@ func TestApp_FlagsFromExtPackage(t *testing.T) {
|
||||
if someint != 10 {
|
||||
t.Errorf("Expected 10 got %d for someint", someint)
|
||||
}
|
||||
|
||||
a = &App{
|
||||
Flags: []Flag{
|
||||
&StringFlag{
|
||||
Name: "carly",
|
||||
Aliases: []string{"c"},
|
||||
Required: false,
|
||||
},
|
||||
&BoolFlag{
|
||||
Name: "jimbob",
|
||||
Aliases: []string{"j"},
|
||||
Required: false,
|
||||
Value: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// this should return an error since epflag shouldnt be registered
|
||||
err = a.Run([]string{"foo", "-c", "cly", "--epflag", "10"})
|
||||
if err == nil {
|
||||
t.Error("Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestApp_Setup_defaultsReader(t *testing.T) {
|
||||
@ -790,6 +813,24 @@ func TestApp_CommandWithNoFlagBeforeTerminator(t *testing.T) {
|
||||
expect(t, args.Get(2), "notAFlagAtAll")
|
||||
}
|
||||
|
||||
func TestApp_SkipFlagParsing(t *testing.T) {
|
||||
var args Args
|
||||
|
||||
app := &App{
|
||||
SkipFlagParsing: true,
|
||||
Action: func(c *Context) error {
|
||||
args = c.Args()
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
_ = app.Run([]string{"", "--", "my-arg", "notAFlagAtAll"})
|
||||
|
||||
expect(t, args.Get(0), "--")
|
||||
expect(t, args.Get(1), "my-arg")
|
||||
expect(t, args.Get(2), "notAFlagAtAll")
|
||||
}
|
||||
|
||||
func TestApp_VisibleCommands(t *testing.T) {
|
||||
app := &App{
|
||||
Commands: []*Command{
|
||||
|
@ -324,6 +324,11 @@ type App struct {
|
||||
UseShortOptionHandling bool
|
||||
// Enable suggestions for commands and flags
|
||||
Suggest bool
|
||||
// Allows global flags set by libraries which use flag.XXXVar(...) directly
|
||||
// to be parsed through this library
|
||||
AllowExtFlags bool
|
||||
// Treat all flags as normal arguments if true
|
||||
SkipFlagParsing bool
|
||||
|
||||
// Has unexported fields.
|
||||
}
|
||||
|
5
testdata/godoc-v2.x.txt
vendored
5
testdata/godoc-v2.x.txt
vendored
@ -324,6 +324,11 @@ type App struct {
|
||||
UseShortOptionHandling bool
|
||||
// Enable suggestions for commands and flags
|
||||
Suggest bool
|
||||
// Allows global flags set by libraries which use flag.XXXVar(...) directly
|
||||
// to be parsed through this library
|
||||
AllowExtFlags bool
|
||||
// Treat all flags as normal arguments if true
|
||||
SkipFlagParsing bool
|
||||
|
||||
// Has unexported fields.
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user