diff --git a/commands/env.go b/commands/env.go new file mode 100644 index 000000000..b6ba3dffb --- /dev/null +++ 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 index fa9872c92..ef6b865e0 100644 --- 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 index 932005939..d64a6cf6f 100644 --- 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