fix(args): Correct legacyArgs logical errors

Close #1156
Signed-off-by: Dong Gang <dong.gang@daocloud.io>
This commit is contained in:
Dong Gang 2020-07-11 15:38:54 +08:00
parent 675ae5f5a9
commit 01ce53c87a

View file

@ -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