import (
"runtime"
+ "github.com/gohugoio/hugo/common/hugo"
+
"github.com/spf13/cobra"
jww "github.com/spf13/jwalterweatherman"
)
baseCmd: newBaseCmd(&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.`,
+ Long: `Print Hugo version and environment info. This is useful in Hugo bug reports.
+
+If you add the -v flag, you will get a full dependency list.
+`,
RunE: func(cmd *cobra.Command, args []string) error {
printHugoVersion()
jww.FEEDBACK.Printf("GOOS=%q\n", runtime.GOOS)
jww.FEEDBACK.Printf("GOARCH=%q\n", runtime.GOARCH)
jww.FEEDBACK.Printf("GOVERSION=%q\n", runtime.Version())
+ isVerbose, _ := cmd.Flags().GetBool("verbose")
+
+ if isVerbose {
+ deps := hugo.GetDependencyList()
+ for _, dep := range deps {
+ jww.FEEDBACK.Printf("%s\n", dep)
+ }
+ }
+
return nil
},
}),
}
+
}
"html/template"
"os"
"path/filepath"
+ "runtime/debug"
+ "sort"
"strings"
"github.com/gohugoio/hugo/hugofs/files"
return env
}
+
+// GetDependencyList returns a sorted dependency list on the format package="version".
+// It includes both Go dependencies and (a manually maintained) list of C(++) dependencies.
+func GetDependencyList() []string {
+ var deps []string
+
+ formatDep := func(path, version string) string {
+ return fmt.Sprintf("%s=%q", path, version)
+ }
+
+ if IsExtended {
+ deps = append(deps, formatDep("github.com/sass/libsass", "3.6.4"))
+ }
+
+ bi, ok := debug.ReadBuildInfo()
+ if !ok {
+ return deps
+ }
+
+ for _, dep := range bi.Deps {
+ deps = append(deps, formatDep(dep.Path, dep.Version))
+ }
+
+ sort.Strings(deps)
+
+ return deps
+}