mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
parent
4f085e80da
commit
7c7baa6183
11 changed files with 86 additions and 14 deletions
|
@ -990,7 +990,9 @@ func (c *hugoBuilder) loadConfig(cd *simplecobra.Commandeer, running bool) error
|
|||
cfg := config.New()
|
||||
cfg.Set("renderToDisk", (c.s == nil && !c.r.renderToMemory) || (c.s != nil && c.s.renderToDisk))
|
||||
watch := c.r.buildWatch || (c.s != nil && c.s.serverWatch)
|
||||
cfg.Set("environment", c.r.environment)
|
||||
if c.r.environment != "" {
|
||||
cfg.Set("environment", c.r.environment)
|
||||
}
|
||||
|
||||
cfg.Set("internal", maps.Params{
|
||||
"running": running,
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -101,6 +101,10 @@ func (c ConfigLanguage) DirsBase() config.CommonDirs {
|
|||
return c.m.Base.CommonDirs
|
||||
}
|
||||
|
||||
func (c ConfigLanguage) WorkingDir() string {
|
||||
return c.m.Base.WorkingDir
|
||||
}
|
||||
|
||||
func (c ConfigLanguage) Quiet() bool {
|
||||
return c.m.Base.Internal.Quiet
|
||||
}
|
||||
|
|
|
@ -64,6 +64,7 @@ type AllProvider interface {
|
|||
Timeout() time.Duration
|
||||
StaticDirs() []string
|
||||
IgnoredErrors() map[string]bool
|
||||
WorkingDir() string
|
||||
}
|
||||
|
||||
// Provider provides the configuration settings for Hugo.
|
||||
|
|
|
@ -898,6 +898,29 @@ mainSections: []
|
|||
|
||||
}
|
||||
|
||||
func TestConfigHugoWorkingDir(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
files := `
|
||||
-- hugo.toml --
|
||||
-- layouts/index.html --
|
||||
WorkingDir: {{ hugo.WorkingDir }}|
|
||||
|
||||
`
|
||||
b := NewIntegrationTestBuilder(
|
||||
IntegrationTestConfig{
|
||||
T: t,
|
||||
TxtarString: files,
|
||||
WorkingDir: "myworkingdir",
|
||||
},
|
||||
).Build()
|
||||
|
||||
b.AssertFileContent("public/index.html", `
|
||||
WorkingDir: myworkingdir|
|
||||
`)
|
||||
|
||||
}
|
||||
|
||||
func TestConfigMergeLanguageDeepEmptyLefSide(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
|
|
@ -261,7 +261,7 @@ func newHugoSitesNew(cfg deps.DepsCfg, d *deps.Deps, sites []*Site) (*HugoSites,
|
|||
dependencies = append(dependencies, depFromMod(m))
|
||||
}
|
||||
|
||||
h.hugoInfo = hugo.NewInfo(h.Configs.Base.Environment, dependencies)
|
||||
h.hugoInfo = hugo.NewInfo(h.Configs.GetFirstLanguageConfig(), dependencies)
|
||||
|
||||
var prototype *deps.Deps
|
||||
for i, s := range sites {
|
||||
|
|
|
@ -480,7 +480,7 @@ func prepareDeps(afs afero.Fs, cfg config.Provider) (*deps.Deps, *TranslationPro
|
|||
translationProvider := NewTranslationProvider()
|
||||
d.TemplateProvider = tplimpl.DefaultTemplateProvider
|
||||
d.TranslationProvider = translationProvider
|
||||
d.Site = page.NewDummyHugoSite(cfg)
|
||||
d.Site = page.NewDummyHugoSite(d.Conf)
|
||||
if err := d.Compile(nil); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
|
|
@ -25,8 +25,8 @@ import (
|
|||
|
||||
func TestPageMatcher(t *testing.T) {
|
||||
c := qt.New(t)
|
||||
developmentTestSite := testSite{h: hugo.NewInfo("development", nil)}
|
||||
productionTestSite := testSite{h: hugo.NewInfo("production", nil)}
|
||||
developmentTestSite := testSite{h: hugo.NewInfo(testConfig{environment: "development"}, nil)}
|
||||
productionTestSite := testSite{h: hugo.NewInfo(testConfig{environment: "production"}, nil)}
|
||||
|
||||
p1, p2, p3 :=
|
||||
&testPage{path: "/p1", kind: "section", lang: "en", site: developmentTestSite},
|
||||
|
@ -156,3 +156,16 @@ func TestDecodeCascadeConfig(t *testing.T) {
|
|||
c.Assert(got, qt.IsNotNil)
|
||||
|
||||
}
|
||||
|
||||
type testConfig struct {
|
||||
environment string
|
||||
workingDir string
|
||||
}
|
||||
|
||||
func (c testConfig) Environment() string {
|
||||
return c.environment
|
||||
}
|
||||
|
||||
func (c testConfig) WorkingDir() string {
|
||||
return c.workingDir
|
||||
}
|
||||
|
|
|
@ -444,9 +444,9 @@ func (s testSite) Param(key any) (any, error) {
|
|||
}
|
||||
|
||||
// NewDummyHugoSite creates a new minimal test site.
|
||||
func NewDummyHugoSite(cfg config.Provider) Site {
|
||||
func NewDummyHugoSite(conf config.AllProvider) Site {
|
||||
return testSite{
|
||||
h: hugo.NewInfo(hugo.EnvironmentProduction, nil),
|
||||
h: hugo.NewInfo(conf, nil),
|
||||
l: &langs.Language{
|
||||
Lang: "en",
|
||||
},
|
||||
|
|
|
@ -29,7 +29,8 @@ func init() {
|
|||
if err := d.Init(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
d.Site = page.NewDummyHugoSite(newTestConfig())
|
||||
conf := testconfig.GetTestConfig(nil, newTestConfig())
|
||||
d.Site = page.NewDummyHugoSite(conf)
|
||||
|
||||
var namespaces internal.TemplateFuncsNamespaces
|
||||
|
||||
|
|
Loading…
Reference in a new issue