diff --git a/main.go b/main.go index 1faf199..eb9d69d 100644 --- a/main.go +++ b/main.go @@ -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) }