ref: b25ba8b095a75da78a129d494c3579f427a2d4a7
parent: b9aaa0079b95ed29ad2f36ebf077a61cb11fc7cb
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Mon Oct 5 16:26:49 EDT 2015
Let Cobra do the usage error logging Fixes #1472
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -67,7 +67,10 @@
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.
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -2,7 +2,6 @@
import (
"os"
- "strings"
jww "github.com/spf13/jwalterweatherman"
)
@@ -23,7 +22,7 @@
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 @@
}
} else { for _, message := range s {- message := cutUsageMessage(message)
-
if message != "" {jww.CRITICAL.Println(message)
}
@@ -41,17 +38,4 @@
}
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])
}
--- a/utils/utils_test.go
+++ /dev/null
@@ -1,26 +1,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)- }
- }
-}
--
⑨