Add hugo.WorkingDir

Fixes #10969
This commit is contained in:
Bjørn Erik Pedersen
2023-05-20 15:04:22 +02:00
parent 4f085e80da
commit 7c7baa6183
11 changed files with 86 additions and 14 deletions

View File

@@ -60,6 +60,7 @@ type HugoInfo struct {
// version of go that the Hugo binary was built with
GoVersion string
conf ConfigProvider
deps []*Dependency
}
@@ -81,15 +82,26 @@ func (i HugoInfo) IsExtended() bool {
return IsExtended
}
// WorkingDir returns the project working directory.
func (i HugoInfo) WorkingDir() string {
return i.conf.WorkingDir()
}
// Deps gets a list of dependencies for this Hugo build.
func (i HugoInfo) Deps() []*Dependency {
return i.deps
}
// ConfigProvider represents the config options that are relevant for HugoInfo.
type ConfigProvider interface {
Environment() string
WorkingDir() string
}
// NewInfo creates a new Hugo Info object.
func NewInfo(environment string, deps []*Dependency) HugoInfo {
if environment == "" {
environment = EnvironmentProduction
func NewInfo(conf ConfigProvider, deps []*Dependency) HugoInfo {
if conf.Environment() == "" {
panic("environment not set")
}
var (
commitHash string
@@ -107,7 +119,8 @@ func NewInfo(environment string, deps []*Dependency) HugoInfo {
return HugoInfo{
CommitHash: commitHash,
BuildDate: buildDate,
Environment: environment,
Environment: conf.Environment(),
conf: conf,
deps: deps,
GoVersion: goVersion,
}

View File

@@ -23,10 +23,12 @@ import (
func TestHugoInfo(t *testing.T) {
c := qt.New(t)
hugoInfo := NewInfo("", nil)
conf := testConfig{environment: "production", workingDir: "/mywork"}
hugoInfo := NewInfo(conf, nil)
c.Assert(hugoInfo.Version(), qt.Equals, CurrentVersion.Version())
c.Assert(fmt.Sprintf("%T", VersionString("")), qt.Equals, fmt.Sprintf("%T", hugoInfo.Version()))
c.Assert(hugoInfo.WorkingDir(), qt.Equals, "/mywork")
bi := getBuildInfo()
if bi != nil {
@@ -39,6 +41,19 @@ func TestHugoInfo(t *testing.T) {
c.Assert(hugoInfo.IsProduction(), qt.Equals, true)
c.Assert(hugoInfo.IsExtended(), qt.Equals, IsExtended)
devHugoInfo := NewInfo("development", nil)
devHugoInfo := NewInfo(testConfig{environment: "development"}, nil)
c.Assert(devHugoInfo.IsProduction(), qt.Equals, false)
}
type testConfig struct {
environment string
workingDir string
}
func (c testConfig) Environment() string {
return c.environment
}
func (c testConfig) WorkingDir() string {
return c.workingDir
}