Display an error when help is called on a non existing command.

This commit is contained in:
Ludovic Fernandez 2019-06-19 14:08:05 +02:00 committed by Traefiker Bot
parent 68ecf78f0e
commit a34876d700
2 changed files with 21 additions and 5 deletions

View file

@ -86,6 +86,11 @@ func execute(cmd *Command, args []string, root bool) error {
} }
func run(cmd *Command, args []string) error { func run(cmd *Command, args []string) error {
if len(args) > 0 && !isFlag(args[0]) && !cmd.AllowArg {
_ = PrintHelp(os.Stdout, cmd)
return fmt.Errorf("command not found: %s", args[0])
}
if isHelp(args) { if isHelp(args) {
return PrintHelp(os.Stdout, cmd) return PrintHelp(os.Stdout, cmd)
} }
@ -95,11 +100,6 @@ func run(cmd *Command, args []string) error {
return fmt.Errorf("command %s is not runnable", cmd.Name) return fmt.Errorf("command %s is not runnable", cmd.Name)
} }
if len(args) > 0 && !isFlag(args[0]) && !cmd.AllowArg {
_ = PrintHelp(os.Stdout, cmd)
return fmt.Errorf("command not found: %v", args)
}
if cmd.Configuration == nil { if cmd.Configuration == nil {
return cmd.Run(args) return cmd.Run(args)
} }

View file

@ -103,6 +103,22 @@ func Test_execute(t *testing.T) {
}, },
expected: expected{error: true}, expected: expected{error: true},
}, },
{
desc: "root command, call help, with argument, command not found",
args: []string{"", "echo", "--help"},
command: func() *Command {
return &Command{
Name: "root",
Description: "This is a test",
Configuration: nil,
Run: func(_ []string) error {
called = "root"
return nil
},
}
},
expected: expected{error: true},
},
{ {
desc: "one sub command", desc: "one sub command",
args: []string{"", "sub1"}, args: []string{"", "sub1"},