mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -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 := config.New()
|
||||||
cfg.Set("renderToDisk", (c.s == nil && !c.r.renderToMemory) || (c.s != nil && c.s.renderToDisk))
|
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)
|
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{
|
cfg.Set("internal", maps.Params{
|
||||||
"running": running,
|
"running": running,
|
||||||
|
|
|
@ -60,6 +60,7 @@ type HugoInfo struct {
|
||||||
// version of go that the Hugo binary was built with
|
// version of go that the Hugo binary was built with
|
||||||
GoVersion string
|
GoVersion string
|
||||||
|
|
||||||
|
conf ConfigProvider
|
||||||
deps []*Dependency
|
deps []*Dependency
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,15 +82,26 @@ func (i HugoInfo) IsExtended() bool {
|
||||||
return IsExtended
|
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.
|
// Deps gets a list of dependencies for this Hugo build.
|
||||||
func (i HugoInfo) Deps() []*Dependency {
|
func (i HugoInfo) Deps() []*Dependency {
|
||||||
return i.deps
|
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.
|
// NewInfo creates a new Hugo Info object.
|
||||||
func NewInfo(environment string, deps []*Dependency) HugoInfo {
|
func NewInfo(conf ConfigProvider, deps []*Dependency) HugoInfo {
|
||||||
if environment == "" {
|
if conf.Environment() == "" {
|
||||||
environment = EnvironmentProduction
|
panic("environment not set")
|
||||||
}
|
}
|
||||||
var (
|
var (
|
||||||
commitHash string
|
commitHash string
|
||||||
|
@ -107,7 +119,8 @@ func NewInfo(environment string, deps []*Dependency) HugoInfo {
|
||||||
return HugoInfo{
|
return HugoInfo{
|
||||||
CommitHash: commitHash,
|
CommitHash: commitHash,
|
||||||
BuildDate: buildDate,
|
BuildDate: buildDate,
|
||||||
Environment: environment,
|
Environment: conf.Environment(),
|
||||||
|
conf: conf,
|
||||||
deps: deps,
|
deps: deps,
|
||||||
GoVersion: goVersion,
|
GoVersion: goVersion,
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,10 +23,12 @@ import (
|
||||||
func TestHugoInfo(t *testing.T) {
|
func TestHugoInfo(t *testing.T) {
|
||||||
c := qt.New(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(hugoInfo.Version(), qt.Equals, CurrentVersion.Version())
|
||||||
c.Assert(fmt.Sprintf("%T", VersionString("")), qt.Equals, fmt.Sprintf("%T", hugoInfo.Version()))
|
c.Assert(fmt.Sprintf("%T", VersionString("")), qt.Equals, fmt.Sprintf("%T", hugoInfo.Version()))
|
||||||
|
c.Assert(hugoInfo.WorkingDir(), qt.Equals, "/mywork")
|
||||||
|
|
||||||
bi := getBuildInfo()
|
bi := getBuildInfo()
|
||||||
if bi != nil {
|
if bi != nil {
|
||||||
|
@ -39,6 +41,19 @@ func TestHugoInfo(t *testing.T) {
|
||||||
c.Assert(hugoInfo.IsProduction(), qt.Equals, true)
|
c.Assert(hugoInfo.IsProduction(), qt.Equals, true)
|
||||||
c.Assert(hugoInfo.IsExtended(), qt.Equals, IsExtended)
|
c.Assert(hugoInfo.IsExtended(), qt.Equals, IsExtended)
|
||||||
|
|
||||||
devHugoInfo := NewInfo("development", nil)
|
devHugoInfo := NewInfo(testConfig{environment: "development"}, nil)
|
||||||
c.Assert(devHugoInfo.IsProduction(), qt.Equals, false)
|
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
|
return c.m.Base.CommonDirs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c ConfigLanguage) WorkingDir() string {
|
||||||
|
return c.m.Base.WorkingDir
|
||||||
|
}
|
||||||
|
|
||||||
func (c ConfigLanguage) Quiet() bool {
|
func (c ConfigLanguage) Quiet() bool {
|
||||||
return c.m.Base.Internal.Quiet
|
return c.m.Base.Internal.Quiet
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,7 @@ type AllProvider interface {
|
||||||
Timeout() time.Duration
|
Timeout() time.Duration
|
||||||
StaticDirs() []string
|
StaticDirs() []string
|
||||||
IgnoredErrors() map[string]bool
|
IgnoredErrors() map[string]bool
|
||||||
|
WorkingDir() string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Provider provides the configuration settings for Hugo.
|
// 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) {
|
func TestConfigMergeLanguageDeepEmptyLefSide(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
|
|
@ -261,7 +261,7 @@ func newHugoSitesNew(cfg deps.DepsCfg, d *deps.Deps, sites []*Site) (*HugoSites,
|
||||||
dependencies = append(dependencies, depFromMod(m))
|
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
|
var prototype *deps.Deps
|
||||||
for i, s := range sites {
|
for i, s := range sites {
|
||||||
|
|
|
@ -480,7 +480,7 @@ func prepareDeps(afs afero.Fs, cfg config.Provider) (*deps.Deps, *TranslationPro
|
||||||
translationProvider := NewTranslationProvider()
|
translationProvider := NewTranslationProvider()
|
||||||
d.TemplateProvider = tplimpl.DefaultTemplateProvider
|
d.TemplateProvider = tplimpl.DefaultTemplateProvider
|
||||||
d.TranslationProvider = translationProvider
|
d.TranslationProvider = translationProvider
|
||||||
d.Site = page.NewDummyHugoSite(cfg)
|
d.Site = page.NewDummyHugoSite(d.Conf)
|
||||||
if err := d.Compile(nil); err != nil {
|
if err := d.Compile(nil); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,8 +25,8 @@ import (
|
||||||
|
|
||||||
func TestPageMatcher(t *testing.T) {
|
func TestPageMatcher(t *testing.T) {
|
||||||
c := qt.New(t)
|
c := qt.New(t)
|
||||||
developmentTestSite := testSite{h: hugo.NewInfo("development", nil)}
|
developmentTestSite := testSite{h: hugo.NewInfo(testConfig{environment: "development"}, nil)}
|
||||||
productionTestSite := testSite{h: hugo.NewInfo("production", nil)}
|
productionTestSite := testSite{h: hugo.NewInfo(testConfig{environment: "production"}, nil)}
|
||||||
|
|
||||||
p1, p2, p3 :=
|
p1, p2, p3 :=
|
||||||
&testPage{path: "/p1", kind: "section", lang: "en", site: developmentTestSite},
|
&testPage{path: "/p1", kind: "section", lang: "en", site: developmentTestSite},
|
||||||
|
@ -156,3 +156,16 @@ func TestDecodeCascadeConfig(t *testing.T) {
|
||||||
c.Assert(got, qt.IsNotNil)
|
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.
|
// NewDummyHugoSite creates a new minimal test site.
|
||||||
func NewDummyHugoSite(cfg config.Provider) Site {
|
func NewDummyHugoSite(conf config.AllProvider) Site {
|
||||||
return testSite{
|
return testSite{
|
||||||
h: hugo.NewInfo(hugo.EnvironmentProduction, nil),
|
h: hugo.NewInfo(conf, nil),
|
||||||
l: &langs.Language{
|
l: &langs.Language{
|
||||||
Lang: "en",
|
Lang: "en",
|
||||||
},
|
},
|
||||||
|
|
|
@ -29,7 +29,8 @@ func init() {
|
||||||
if err := d.Init(); err != nil {
|
if err := d.Init(); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
d.Site = page.NewDummyHugoSite(newTestConfig())
|
conf := testconfig.GetTestConfig(nil, newTestConfig())
|
||||||
|
d.Site = page.NewDummyHugoSite(conf)
|
||||||
|
|
||||||
var namespaces internal.TemplateFuncsNamespaces
|
var namespaces internal.TemplateFuncsNamespaces
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue