summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-05-30 14:58:05 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-05-30 16:22:26 +0200
commit1464091ad639aa8d3a3793515a9661eaf801cfcb (patch)
tree651010ebafde1d5aabb3a476ebd692806568497c
parent2c88e454d8befa243a0e9e55ff92821d96865151 (diff)
content adapter: Fix server crash on partial edit
Fixes #12538
-rw-r--r--hugolib/content_map.go6
-rw-r--r--hugolib/hugo_sites_build.go13
-rw-r--r--hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go5
3 files changed, 13 insertions, 11 deletions
diff --git a/hugolib/content_map.go b/hugolib/content_map.go
index 452bf8efa..6ab945209 100644
--- a/hugolib/content_map.go
+++ b/hugolib/content_map.go
@@ -335,12 +335,6 @@ func (m *pageMap) addPagesFromGoTmplFi(fi hugofs.FileMetaInfo, buildConfig *Buil
f := source.NewFileInfo(fi)
h := s.h
- // Make sure the layouts are initialized.
- if _, err := h.init.layouts.Do(context.Background()); err != nil {
- addErr = err
- return
- }
-
contentAdapter := s.pageMap.treePagesFromTemplateAdapters.Get(pi.Base())
var rebuild bool
if contentAdapter != nil {
diff --git a/hugolib/hugo_sites_build.go b/hugolib/hugo_sites_build.go
index 4bea93039..8a4966055 100644
--- a/hugolib/hugo_sites_build.go
+++ b/hugolib/hugo_sites_build.go
@@ -239,6 +239,10 @@ func (h *HugoSites) process(ctx context.Context, l logg.LevelLogger, config *Bui
l = l.WithField("step", "process")
defer loggers.TimeTrackf(l, time.Now(), nil, "")
+ if _, err := h.init.layouts.Do(ctx); err != nil {
+ return err
+ }
+
if len(events) > 0 {
// This is a rebuild
return h.processPartial(ctx, l, config, init, events)
@@ -324,10 +328,6 @@ func (h *HugoSites) render(l logg.LevelLogger, config *BuildCfg) error {
loggers.TimeTrackf(l, start, h.buildCounters.loggFields(), "")
}()
- if _, err := h.init.layouts.Do(context.Background()); err != nil {
- return err
- }
-
siteRenderContext := &siteRenderContext{cfg: config, multihost: h.Configs.IsMultihost}
i := 0
@@ -918,7 +918,6 @@ func (h *HugoSites) processPartial(ctx context.Context, l logg.LevelLogger, conf
if tmplChanged || i18nChanged {
// TODO(bep) we should split this, but currently the loading of i18n and layout files are tied together. See #12048.
h.init.layouts.Reset()
-
if err := loggers.TimeTrackfn(func() (logg.LevelLogger, error) {
// TODO(bep) this could probably be optimized to somehow
// only load the changed templates and its dependencies, but that is non-trivial.
@@ -991,6 +990,10 @@ func (s *Site) handleContentAdapterChanges(bi pagesfromdata.BuildInfo, buildConf
}
func (h *HugoSites) processContentAdaptersOnRebuild(ctx context.Context, buildConfig *BuildCfg) error {
+ // Make sure the layouts are initialized.
+ if _, err := h.init.layouts.Do(context.Background()); err != nil {
+ return err
+ }
g := rungroup.Run[*pagesfromdata.PagesFromTemplate](ctx, rungroup.Config[*pagesfromdata.PagesFromTemplate]{
NumWorkers: h.numWorkers,
Handle: func(ctx context.Context, p *pagesfromdata.PagesFromTemplate) error {
diff --git a/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go b/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go
index 3a37c233b..cbb2da75c 100644
--- a/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go
+++ b/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go
@@ -38,7 +38,11 @@ draft: false
-- layouts/partials/get-value.html --
{{ $val := "p1" }}
{{ return $val }}
+-- layouts/_default/baseof.html --
+Baseof:
+{{ block "main" . }}{{ end }}
-- layouts/_default/single.html --
+{{ define "main" }}
Single: {{ .Title }}|{{ .Content }}|Params: {{ .Params.param1 }}|Path: {{ .Path }}|
Dates: Date: {{ .Date.Format "2006-01-02" }}|Lastmod: {{ .Lastmod.Format "2006-01-02" }}|PublishDate: {{ .PublishDate.Format "2006-01-02" }}|ExpiryDate: {{ .ExpiryDate.Format "2006-01-02" }}|
Len Resources: {{ .Resources | len }}
@@ -49,6 +53,7 @@ Featured Image: {{ .RelPermalink }}|{{ .Name }}|
Resized Featured Image: {{ .RelPermalink }}|{{ .Width }}|
{{ end}}
{{ end }}
+{{ end }}
-- layouts/_default/list.html --
List: {{ .Title }}|{{ .Content }}|
RegularPagesRecursive: {{ range .RegularPagesRecursive }}{{ .Title }}:{{ .Path }}|{{ end }}$