Add complete dependency list in "hugo env -v"
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 9 Apr 2021 06:07:22 +0000 (08:07 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 9 Apr 2021 06:07:22 +0000 (08:07 +0200)
Fixes #8400

commands/env.go
common/hugo/hugo.go

index 975c3bd0a93a3c72cb71e1cf52f8d09d0382d226..65808b1be67ffd536396b7813168500ae6fca914 100644 (file)
@@ -16,6 +16,8 @@ package commands
 import (
        "runtime"
 
+       "github.com/gohugoio/hugo/common/hugo"
+
        "github.com/spf13/cobra"
        jww "github.com/spf13/jwalterweatherman"
 )
@@ -31,15 +33,28 @@ func newEnvCmd() *envCmd {
                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
                        },
                }),
        }
+
 }
index 1aae807769fe9d6cd329c1359e87d8f46faf734f..6e94a8a33d734c2f17a8f812ccd36126f9d43e2c 100644 (file)
@@ -18,6 +18,8 @@ import (
        "html/template"
        "os"
        "path/filepath"
+       "runtime/debug"
+       "sort"
        "strings"
 
        "github.com/gohugoio/hugo/hugofs/files"
@@ -107,3 +109,30 @@ func GetExecEnviron(workDir string, cfg config.Provider, fs afero.Fs) []string {
 
        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
+}