]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
content adapter: Fix server crash on partial edit
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 30 May 2024 12:58:05 +0000 (14:58 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 30 May 2024 14:22:26 +0000 (16:22 +0200)
Fixes #12538

hugolib/content_map.go
hugolib/hugo_sites_build.go
hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go

index 452bf8efa236eee556a2b75824644fe88ccc135a..6ab945209ec193f7d6b9a03f820d6e6960b55da4 100644 (file)
@@ -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 {
index 4bea93039570c8339423eac48fd520aecfa5abd2..8a4966055d88ff30636c68edcb26c34a3e6bd49d 100644 (file)
@@ -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 {
index 3a37c233b965bfb1baf1874b13dd87305e78189d..cbb2da75c86ed4611d733fc6b1f63e5114f66e2a 100644 (file)
@@ -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 }}$