Add hugo env command
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 5 Oct 2016 08:20:25 +0000 (10:20 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 5 Oct 2016 08:20:25 +0000 (10:20 +0200)
Useful for bug reports.

Fixes #2523

commands/env.go [new file with mode: 0644]
commands/hugo.go
commands/version.go

diff --git a/commands/env.go b/commands/env.go
new file mode 100644 (file)
index 0000000..b6ba3df
--- /dev/null
@@ -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
+       },
+}
index fa9872c9284c4a82e7741898e8b3a1519dd221b2..ef6b865e0b72665a67dc3a2dadb7646f70e4ba63 100644 (file)
@@ -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)
index 932005939f3e3ffb4de7e759a9b4c2fb823e1807..d64a6cf6f16858af6e1561ff3431377a84a81bd8 100644 (file)
@@ -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