Skip to content

Commit

Permalink
Partial Revert of #922 (#1068)
Browse files Browse the repository at this point in the history
Issue Reference: #1056

#922 introduced a new error
type that emitted when a command was not runnable. This caused
all commands w/o a run function set to error w/ that message and a status code of 1.

This change reverts the addition of that new error. Similar
functionality can be accomplished by leveraging RunE.
  • Loading branch information
jharshman authored Mar 27, 2020
1 parent 95f2f73 commit 6607e6b
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 14 deletions.
13 changes: 1 addition & 12 deletions command.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ package cobra
import (
"bytes"
"context"
"errors"
"fmt"
"io"
"os"
Expand All @@ -29,8 +28,6 @@ import (
flag "github.com/spf13/pflag"
)

var ErrSubCommandRequired = errors.New("subcommand is required")

// FParseErrWhitelist configures Flag parse errors to be ignored
type FParseErrWhitelist flag.ParseErrorsWhitelist

Expand Down Expand Up @@ -801,7 +798,7 @@ func (c *Command) execute(a []string) (err error) {
}

if !c.Runnable() {
return ErrSubCommandRequired
return flag.ErrHelp
}

c.preRun()
Expand Down Expand Up @@ -952,14 +949,6 @@ func (c *Command) ExecuteC() (cmd *Command, err error) {
return cmd, nil
}

// If command wasn't runnable, show full help, but do return the error.
// This will result in apps by default returning a non-success exit code, but also gives them the option to
// handle specially.
if err == ErrSubCommandRequired {
cmd.HelpFunc()(cmd, args)
return cmd, err
}

// If root command has SilentErrors flagged,
// all subcommands should respect it
if !cmd.SilenceErrors && !c.SilenceErrors {
Expand Down
4 changes: 2 additions & 2 deletions command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -903,8 +903,8 @@ func TestHelpExecutedOnNonRunnableChild(t *testing.T) {
rootCmd.AddCommand(childCmd)

output, err := executeCommand(rootCmd, "child")
if err != ErrSubCommandRequired {
t.Errorf("Expected error")
if err != nil {
t.Errorf("Unexpected error: %v", err)
}

checkStringContains(t, output, childCmd.Long)
Expand Down

0 comments on commit 6607e6b

Please sign in to comment.