Skip to content

Commit d7a7e6d

Browse files
committed
feat: add '[args]' and 'Valid Args:' to --help
1 parent a34ecc9 commit d7a7e6d

File tree

4 files changed

+498
-125
lines changed

4 files changed

+498
-125
lines changed

args.go

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,27 +26,13 @@ func validateArgs(cmd *Command, args []string) error {
2626
return nil
2727
}
2828

29-
// Legacy arg validation has the following behaviour:
30-
// - root commands with no subcommands can take arbitrary arguments
31-
// - root commands with subcommands will do subcommand validity checking
32-
// - subcommands will always accept arbitrary arguments
33-
func legacyArgs(cmd *Command, args []string) error {
34-
// no subcommand, always take args
35-
if !cmd.HasSubCommands() {
36-
return nil
37-
}
38-
39-
// root command with subcommands, do subcommand checking.
40-
if !cmd.HasParent() && len(args) > 0 {
41-
return fmt.Errorf("unknown command %q for %q%s", args[0], cmd.CommandPath(), cmd.findSuggestions(args[0]))
42-
}
43-
return nil
44-
}
45-
4629
// NoArgs returns an error if any args are included.
4730
func NoArgs(cmd *Command, args []string) error {
4831
if len(args) > 0 {
49-
return fmt.Errorf("unknown command %q for %q", args[0], cmd.CommandPath())
32+
if cmd.HasAvailableSubCommands() {
33+
return fmt.Errorf("unknown command %q for %q", args[0], cmd.CommandPath())
34+
}
35+
return fmt.Errorf("\"%s\" rejected; %q does not accept args", args[0], cmd.CommandPath())
5036
}
5137
return nil
5238
}

0 commit comments

Comments
 (0)