diff --git a/vlib/cli/command.v b/vlib/cli/command.v index b6a017af06..f2e528c0c6 100644 --- a/vlib/cli/command.v +++ b/vlib/cli/command.v @@ -186,33 +186,29 @@ fn (mut cmd Command) parse_commands() { } } // if no further command was found, execute current command - if int(cmd.execute) == 0 { - if !cmd.disable_help { - cmd.execute_help() - } - } else { - if cmd.required_args > 0 { - if cmd.required_args > cmd.args.len { - println('Command `$cmd.name` needs at least $cmd.required_args arguments') - exit(1) - } - } - cmd.check_required_flags() - if int(cmd.pre_execute) > 0 { - cmd.pre_execute(*cmd) or { - println('cli preexecution error: $err') - exit(1) - } - } - cmd.execute(*cmd) or { - println('cli execution error: $err') + if cmd.required_args > 0 { + if cmd.required_args > cmd.args.len { + eprintln('Command `$cmd.name` needs at least $cmd.required_args arguments') exit(1) } - if int(cmd.post_execute) > 0 { - cmd.post_execute(*cmd) or { - println('cli postexecution error: $err') - exit(1) - } + } + cmd.check_required_flags() + if int(cmd.pre_execute) > 0 { + cmd.pre_execute(*cmd) or { + eprintln('cli preexecution error: $err') + exit(1) + } + } + if int(cmd.execute) > 0 { + cmd.execute(*cmd) or { + eprintln('cli execution error: $err') + exit(1) + } + } + if int(cmd.post_execute) > 0 { + cmd.post_execute(*cmd) or { + eprintln('cli postexecution error: $err') + exit(1) } } } diff --git a/vlib/v/tests/inout/cli_command_no_execute.out b/vlib/v/tests/inout/cli_command_no_execute.out new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vlib/v/tests/inout/cli_command_no_execute.vv b/vlib/v/tests/inout/cli_command_no_execute.vv new file mode 100644 index 0000000000..db532200c8 --- /dev/null +++ b/vlib/v/tests/inout/cli_command_no_execute.vv @@ -0,0 +1,7 @@ +import os +import cli {Command} + +fn main() { + mut cmd := Command {} + cmd.parse(os.args) +}