hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 2a4ed1c49259d170a2aa985a603c8a5bed00ff67
parent 80367ea218d653dd21010695d71ddcaa001873da
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Wed,  5 Oct 2016 10:20:25 +0200

Add hugo env command

Useful for bug reports.

Fixes #2523

Diffstat:
Acommands/env.go | 35+++++++++++++++++++++++++++++++++++
Mcommands/hugo.go | 1+
Mcommands/version.go | 24++++++++++++++----------
3 files changed, 50 insertions(+), 10 deletions(-)
diff --git a/commands/env.go b/commands/env.go
@@ -0,0 +1,35 @@
+// Copyright 2016 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package commands
+
+import (
+	"fmt"
+	"runtime"
+
+	"github.com/spf13/cobra"
+)
+
+var envCmd = &cobra.Command{
+	Use:   "env",
+	Short: "Print Hugo version and environment info",
+	Long:  `Print Hugo version and environment info. This is useful in Hugo bug reports.`,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		printHugoVersion()
+		fmt.Printf("GOOS=%q\n", runtime.GOOS)
+		fmt.Printf("GOARCH=%q\n", runtime.GOARCH)
+		fmt.Printf("GOVERSION=%q\n", runtime.Version())
+
+		return nil
+	},
+}
diff --git a/commands/hugo.go b/commands/hugo.go
@@ -185,6 +185,7 @@ func Execute() {
 func AddCommands() {
 	HugoCmd.AddCommand(serverCmd)
 	HugoCmd.AddCommand(versionCmd)
+	HugoCmd.AddCommand(envCmd)
 	HugoCmd.AddCommand(configCmd)
 	HugoCmd.AddCommand(checkCmd)
 	HugoCmd.AddCommand(benchmarkCmd)
diff --git a/commands/version.go b/commands/version.go
@@ -31,21 +31,25 @@ var versionCmd = &cobra.Command{
 	Short: "Print the version number of Hugo",
 	Long:  `All software has versions. This is Hugo's.`,
 	RunE: func(cmd *cobra.Command, args []string) error {
-		if hugolib.BuildDate == "" {
-			setBuildDate() // set the build date from executable's mdate
-		} else {
-			formatBuildDate() // format the compile time
-		}
-		if hugolib.CommitHash == "" {
-			fmt.Printf("Hugo Static Site Generator v%s BuildDate: %s\n", helpers.HugoVersion(), hugolib.BuildDate)
-		} else {
-			fmt.Printf("Hugo Static Site Generator v%s-%s BuildDate: %s\n", helpers.HugoVersion(), strings.ToUpper(hugolib.CommitHash), hugolib.BuildDate)
-		}
+		printHugoVersion()
 
 		return nil
 	},
 }
 
+func printHugoVersion() {
+	if hugolib.BuildDate == "" {
+		setBuildDate() // set the build date from executable's mdate
+	} else {
+		formatBuildDate() // format the compile time
+	}
+	if hugolib.CommitHash == "" {
+		fmt.Printf("Hugo Static Site Generator v%s BuildDate: %s\n", helpers.HugoVersion(), hugolib.BuildDate)
+	} else {
+		fmt.Printf("Hugo Static Site Generator v%s-%s BuildDate: %s\n", helpers.HugoVersion(), strings.ToUpper(hugolib.CommitHash), hugolib.BuildDate)
+	}
+}
+
 // setBuildDate checks the ModTime of the Hugo executable and returns it as a
 // formatted string.  This assumes that the executable name is Hugo, if it does
 // not exist, an empty string will be returned.  This is only called if the