shithub: hugo

Download patch

ref: b25ba8b095a75da78a129d494c3579f427a2d4a7
parent: b9aaa0079b95ed29ad2f36ebf077a61cb11fc7cb
author: Bjørn Erik Pedersen <[email protected]>
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)
-		}
-	}
-}