From b25ba8b095a75da78a129d494c3579f427a2d4a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 5 Oct 2015 20:26:49 +0200 Subject: [PATCH] Let Cobra do the usage error logging Fixes #1472 --- commands/hugo.go | 5 ++++- utils/utils.go | 18 +----------------- utils/utils_test.go | 26 -------------------------- 3 files changed, 5 insertions(+), 44 deletions(-) delete mode 100644 utils/utils_test.go diff --git a/commands/hugo.go b/commands/hugo.go index 3fbbe0952..b0e4964c4 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -67,7 +67,10 @@ var Source, CacheDir, Destination, Theme, BaseURL, CfgFile, LogFile, Editor stri func Execute() { HugoCmd.SetGlobalNormalizationFunc(helpers.NormalizeHugoFlags) AddCommands() - utils.StopOnErr(HugoCmd.Execute()) + if err := HugoCmd.Execute(); err != nil { + // the err is already logged by Cobra + os.Exit(-1) + } } //AddCommands adds child commands to the root command HugoCmd. diff --git a/utils/utils.go b/utils/utils.go index ea89ec745..7bb9e5852 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -2,7 +2,6 @@ package utils import ( "os" - "strings" jww "github.com/spf13/jwalterweatherman" ) @@ -23,7 +22,7 @@ func CheckErr(err error, s ...string) { func StopOnErr(err error, s ...string) { if err != nil { if len(s) == 0 { - newMessage := cutUsageMessage(err.Error()) + newMessage := err.Error() // Printing an empty string results in a error with // no message, no bueno. @@ -32,8 +31,6 @@ func StopOnErr(err error, s ...string) { } } else { for _, message := range s { - message := cutUsageMessage(message) - if message != "" { jww.CRITICAL.Println(message) } @@ -42,16 +39,3 @@ func StopOnErr(err error, s ...string) { os.Exit(-1) } } - -// cutUsageMessage splits the incoming string on the beginning of the usage -// message text. Anything in the first element of the returned slice, trimmed -// of its Unicode defined spaces, should be returned. The 2nd element of the -// slice will have the usage message that we wish to elide. -// -// This is done because Cobra already prints Hugo's usage message; not eliding -// would result in the usage output being printed twice, which leads to bug -// reports, more specifically: https://github.com/spf13/hugo/issues/374 -func cutUsageMessage(s string) string { - pieces := strings.Split(s, "Usage of") - return strings.TrimSpace(pieces[0]) -} diff --git a/utils/utils_test.go b/utils/utils_test.go deleted file mode 100644 index 4ec2a4eec..000000000 --- a/utils/utils_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package utils - -import ( - "testing" -) - -func TestCutUsageMessage(t *testing.T) { - tests := []struct { - message string - cutMessage string - }{ - {"", ""}, - {" Usage of hugo: \n -b, --baseURL=...", ""}, - {"Some error Usage of hugo: \n", "Some error"}, - {"Usage of hugo: \n -b --baseU", ""}, - {"CRITICAL error for usage of hugo ", "CRITICAL error for usage of hugo"}, - {"Invalid short flag a in -abcde", "Invalid short flag a in -abcde"}, - } - - for _, test := range tests { - message := cutUsageMessage(test.message) - if message != test.cutMessage { - t.Errorf("Expected %#v, got %#v", test.cutMessage, message) - } - } -}