Let Cobra do the usage error logging

Fixes #1472
This commit is contained in:
Bjørn Erik Pedersen 2015-10-05 20:26:49 +02:00
parent b9aaa0079b
commit b25ba8b095
3 changed files with 5 additions and 44 deletions

View file

@ -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.

View file

@ -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])
}

View file

@ -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)
}
}
}