Skip to content

Commit

Permalink
Add complete dependency list in "hugo env -v"
Browse files Browse the repository at this point in the history
Fixes #8400
  • Loading branch information
bep committed Apr 9, 2021
1 parent 7fdd2b9 commit 9b83f45
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
17 changes: 16 additions & 1 deletion commands/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ package commands
import (
"runtime"

"github.com/gohugoio/hugo/common/hugo"

"github.com/spf13/cobra"
jww "github.com/spf13/jwalterweatherman"
)
Expand All @@ -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
},
}),
}

}
29 changes: 29 additions & 0 deletions common/hugo/hugo.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import (
"html/template"
"os"
"path/filepath"
"runtime/debug"
"sort"
"strings"

"github.com/gohugoio/hugo/hugofs/files"
Expand Down Expand Up @@ -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
}

0 comments on commit 9b83f45

Please sign in to comment.