Add hugo env command

Useful for bug reports.

Fixes #2523
This commit is contained in:
Bjørn Erik Pedersen 2016-10-05 10:20:25 +02:00
parent 80367ea218
commit 2a4ed1c492
3 changed files with 50 additions and 10 deletions

35
commands/env.go Normal file
View file

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

View file

@ -185,6 +185,7 @@ func Execute() {
func AddCommands() { func AddCommands() {
HugoCmd.AddCommand(serverCmd) HugoCmd.AddCommand(serverCmd)
HugoCmd.AddCommand(versionCmd) HugoCmd.AddCommand(versionCmd)
HugoCmd.AddCommand(envCmd)
HugoCmd.AddCommand(configCmd) HugoCmd.AddCommand(configCmd)
HugoCmd.AddCommand(checkCmd) HugoCmd.AddCommand(checkCmd)
HugoCmd.AddCommand(benchmarkCmd) HugoCmd.AddCommand(benchmarkCmd)

View file

@ -31,21 +31,25 @@ var versionCmd = &cobra.Command{
Short: "Print the version number of Hugo", Short: "Print the version number of Hugo",
Long: `All software has versions. This is Hugo's.`, Long: `All software has versions. This is Hugo's.`,
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
if hugolib.BuildDate == "" { printHugoVersion()
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)
}
return nil 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 // 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 // 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 // not exist, an empty string will be returned. This is only called if the