From e87775845d3e19548448acc6f26692ffce11998c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Thu, 31 Oct 2019 22:44:43 +0100 Subject: [PATCH] Also print cmd usage string on "unknown command" --- command/root.go | 10 +++++----- main.go | 9 ++++++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/command/root.go b/command/root.go index 51c602511..a309960e3 100644 --- a/command/root.go +++ b/command/root.go @@ -1,7 +1,6 @@ package command import ( - "errors" "fmt" "os" @@ -19,13 +18,14 @@ func init() { // RootCmd.PersistentFlags().BoolP("verbose", "V", false, "enable verbose output") RootCmd.SetFlagErrorFunc(func(cmd *cobra.Command, err error) error { - cmd.Println(err) - cmd.Println(cmd.UsageString()) - return SilentErr + return FlagError{err} }) } -var SilentErr = errors.New("SilentErr") +// FlagError is the kind of error raised in flag processing +type FlagError struct { + error +} // RootCmd is the entry point of command-line execution var RootCmd = &cobra.Command{ diff --git a/main.go b/main.go index ae20c309d..e7f94a5d0 100644 --- a/main.go +++ b/main.go @@ -3,14 +3,17 @@ package main import ( "fmt" "os" + "strings" "github.com/github/gh-cli/command" ) func main() { - if err := command.RootCmd.Execute(); err != nil { - if err != command.SilentErr { - fmt.Fprintln(os.Stderr, err) + if cmd, err := command.RootCmd.ExecuteC(); err != nil { + fmt.Fprintln(os.Stderr, err) + _, isFlagError := err.(command.FlagError) + if isFlagError || strings.HasPrefix(err.Error(), "unknown command ") { + fmt.Fprintln(os.Stderr, cmd.UsageString()) } os.Exit(1) }