diff --git a/config/security/securityConfig.go b/config/security/securityConfig.go index 46a5d0a23..a3ec5197d 100644 --- a/config/security/securityConfig.go +++ b/config/security/securityConfig.go @@ -37,6 +37,7 @@ var DefaultConfig = Config{ Allow: MustNewWhitelist( "^(dart-)?sass(-embedded)?$", // sass, dart-sass, dart-sass-embedded. "^go$", // for Go Modules + "^git$", // For Git info "^npx$", // used by all Node tools (Babel, PostCSS). "^postcss$", "^tailwindcss$", diff --git a/config/security/securityConfig_test.go b/config/security/securityConfig_test.go index 87a243012..faa05a97f 100644 --- a/config/security/securityConfig_test.go +++ b/config/security/securityConfig_test.go @@ -135,7 +135,7 @@ func TestToTOML(t *testing.T) { got := DefaultConfig.ToTOML() c.Assert(got, qt.Equals, - "[security]\n enableInlineShortcodes = false\n\n [security.exec]\n allow = ['^(dart-)?sass(-embedded)?$', '^go$', '^npx$', '^postcss$', '^tailwindcss$']\n osEnv = ['(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE)$']\n\n [security.funcs]\n getenv = ['^HUGO_', '^CI$']\n\n [security.http]\n methods = ['(?i)GET|POST']\n urls = ['.*']", + "[security]\n enableInlineShortcodes = false\n\n [security.exec]\n allow = ['^(dart-)?sass(-embedded)?$', '^go$', '^git$', '^npx$', '^postcss$', '^tailwindcss$']\n osEnv = ['(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE)$']\n\n [security.funcs]\n getenv = ['^HUGO_', '^CI$']\n\n [security.http]\n methods = ['(?i)GET|POST']\n urls = ['.*']", ) } diff --git a/go.mod b/go.mod index b9b586072..2b7327aa3 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/cloudfront v1.35.4 github.com/bep/clocks v0.5.0 github.com/bep/debounce v1.2.0 - github.com/bep/gitmap v1.4.0 + github.com/bep/gitmap v1.6.0 github.com/bep/goat v0.5.0 github.com/bep/godartsass v1.2.0 github.com/bep/godartsass/v2 v2.0.0 diff --git a/go.sum b/go.sum index 54a4a376c..801a32cd2 100644 --- a/go.sum +++ b/go.sum @@ -120,6 +120,10 @@ github.com/bep/debounce v1.2.0 h1:wXds8Kq8qRfwAOpAxHrJDbCXgC5aHSzgQb/0gKsHQqo= github.com/bep/debounce v1.2.0/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= github.com/bep/gitmap v1.4.0 h1:GeWbPb2QDTfcZLBQmCB693N3sJmPQfeu81fDrD5r8x8= github.com/bep/gitmap v1.4.0/go.mod h1:n+3W1f/rot2hynsqEGxGMErPRgT41n9CkGuzPvz9cIw= +github.com/bep/gitmap v1.5.0 h1:ExDl7HeDaRDG8FXFRTnv20qzbyJlC6ivdOboMYFvrms= +github.com/bep/gitmap v1.5.0/go.mod h1:n+3W1f/rot2hynsqEGxGMErPRgT41n9CkGuzPvz9cIw= +github.com/bep/gitmap v1.6.0 h1:sDuQMm9HoTL0LtlrfxjbjgAg2wHQd4nkMup2FInYzhA= +github.com/bep/gitmap v1.6.0/go.mod h1:n+3W1f/rot2hynsqEGxGMErPRgT41n9CkGuzPvz9cIw= github.com/bep/goat v0.5.0 h1:S8jLXHCVy/EHIoCY+btKkmcxcXFd34a0Q63/0D4TKeA= github.com/bep/goat v0.5.0/go.mod h1:Md9x7gRxiWKs85yHlVTvHQw9rg86Bm+Y4SuYE8CTH7c= github.com/bep/godartsass v1.2.0 h1:E2VvQrxAHAFwbjyOIExAMmogTItSKodoKuijNrGm5yU= diff --git a/hugolib/gitinfo.go b/hugolib/gitinfo.go index f0c5dfa27..6b5261084 100644 --- a/hugolib/gitinfo.go +++ b/hugolib/gitinfo.go @@ -14,11 +14,13 @@ package hugolib import ( + "io" "path/filepath" "strings" "github.com/bep/gitmap" - "github.com/gohugoio/hugo/config" + "github.com/gohugoio/hugo/common/hexec" + "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/source" ) @@ -38,10 +40,24 @@ func (g *gitInfo) forPage(p page.Page) source.GitInfo { return source.NewGitInfo(*gi) } -func newGitInfo(conf config.AllProvider) (*gitInfo, error) { - workingDir := conf.BaseConfig().WorkingDir +func newGitInfo(d *deps.Deps) (*gitInfo, error) { + opts := gitmap.Options{ + Repository: d.Conf.BaseConfig().WorkingDir, + GetGitCommandFunc: func(stdout, stderr io.Writer, args ...string) (gitmap.Runner, error) { + var argsv []any + for _, arg := range args { + argsv = append(argsv, arg) + } + argsv = append( + argsv, + hexec.WithStdout(stdout), + hexec.WithStderr(stderr), + ) + return d.ExecHelper.New("git", argsv...) + }, + } - gitRepo, err := gitmap.Map(workingDir, "") + gitRepo, err := gitmap.Map(opts) if err != nil { return nil, err } diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go index 25a79d65a..659a772f2 100644 --- a/hugolib/hugo_sites.go +++ b/hugolib/hugo_sites.go @@ -346,7 +346,7 @@ func (h *HugoSites) GetContentPage(filename string) page.Page { func (h *HugoSites) loadGitInfo() error { if h.Configs.Base.EnableGitInfo { - gi, err := newGitInfo(h.Conf) + gi, err := newGitInfo(h.Deps) if err != nil { h.Log.Errorln("Failed to read Git log:", err) } else {