diff --git a/args.go b/args.go index 70e9b262..a1299960 100644 --- a/args.go +++ b/args.go @@ -9,16 +9,15 @@ type PositionalArgs func(cmd *Command, args []string) error // Legacy arg validation has the following behaviour: // - root commands with no subcommands can take arbitrary arguments -// - root commands with subcommands will do subcommand validity checking -// - subcommands will always accept arbitrary arguments +// - commands with subcommands cannot take any arguments func legacyArgs(cmd *Command, args []string) error { // no subcommand, always take args if !cmd.HasSubCommands() { return nil } - // root command with subcommands, do subcommand checking. - if !cmd.HasParent() && len(args) > 0 { + // root command with subcommands, the args should be empty. + if cmd.HasSubCommands() && len(args) > 0 { return fmt.Errorf("unknown command %q for %q%s", args[0], cmd.CommandPath(), cmd.findSuggestions(args[0])) } return nil