Pass global flags down to subcommands

Fix #51

Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
Andrew Thornton 2021-07-23 17:39:24 +01:00
parent c38cabc3dc
commit 21c99a7e82
No known key found for this signature in database
GPG Key ID: 3CDE74631F13A748
1 changed files with 23 additions and 0 deletions

23
main.go
View File

@ -71,6 +71,29 @@ func main() {
},
}
for _, command := range app.Commands {
originalFlagNames := make([]string, 0, len(command.Flags))
for _, flag := range command.Flags {
originalFlagNames = append(originalFlagNames, flag.Names()...)
}
for _, flag := range app.Flags {
found := false
flagNameLoop:
for _, name := range flag.Names() {
for _, originalName := range originalFlagNames {
if name == originalName {
found = true
break flagNameLoop
}
}
}
if !found {
command.Flags = append(command.Flags, flag)
}
}
}
if err := app.Run(os.Args); err != nil {
fmt.Printf("Failed to run app with %s: %v\n", os.Args[1:], err)
}