Skip to content

Commit 2bcbf10

Browse files
committed
hugolib: Prepare render per output format
See #3220
1 parent 1e4d082 commit 2bcbf10

File tree

4 files changed

+47
-31
lines changed

4 files changed

+47
-31
lines changed

‎hugolib/hugo_sites.go‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,13 @@ func (h *HugoSites) setupTranslations() {
492492
}
493493
}
494494

495-
func (s *Site) preparePagesForRender(cfg *BuildCfg) {
495+
func (s *Site) preparePagesForRender(outFormatIdx int, cfg *BuildCfg) {
496+
497+
if outFormatIdx > 0 {
498+
// TODO(bep) for now
499+
return
500+
}
501+
496502
pageChan := make(chan *Page)
497503
wg := &sync.WaitGroup{}
498504
numWorkers := getGoMaxProcs() * 4

‎hugolib/hugo_sites_build.go‎

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -203,26 +203,31 @@ func (h *HugoSites) assemble(config *BuildCfg) error {
203203
return err
204204
}
205205

206-
for _, s := range h.Sites {
207-
s.preparePagesForRender(config)
208-
}
209-
210206
return nil
211207

212208
}
213209

214210
func (h *HugoSites) render(config *BuildCfg) error {
215-
if !config.SkipRender {
216-
for _, s := range h.Sites {
217-
if err := s.render(); err != nil {
218-
return err
219-
}
220211

221-
if config.PrintStats {
222-
s.Stats()
212+
for _, s := range h.Sites {
213+
s.initRenderFormats()
214+
for i, rf := range s.renderFormats {
215+
s.rc = &siteRenderingContext{Format: rf}
216+
s.preparePagesForRender(i, config)
217+
218+
if !config.SkipRender {
219+
if err := s.render(i); err != nil {
220+
return err
221+
}
223222
}
224223
}
225224

225+
if !config.SkipRender && config.PrintStats {
226+
s.Stats()
227+
}
228+
}
229+
230+
if !config.SkipRender {
226231
if err := h.renderCrossSitesArtifacts(); err != nil {
227232
return err
228233
}

‎hugolib/shortcode.go‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,15 +309,16 @@ func executeShortcodeFuncMap(funcs map[string]func() (string, error)) (map[strin
309309
}
310310

311311
func renderShortcodes(shortcodes map[string]shortcode, p *Page) map[string]func() (string, error) {
312+
312313
renderedShortcodes := make(map[string]func() (string, error))
313314

314315
for key, sc := range shortcodes {
315316
if sc.err != nil {
316317
// need to have something to replace with
317318
renderedShortcodes[key] = emptyShortcodeFn
318319
} else {
319-
shorctode := sc
320-
renderedShortcodes[key] = func() (string, error) { return renderShortcode(shorctode, nil, p), nil }
320+
shortcode := sc
321+
renderedShortcodes[key] = func() (string, error) { return renderShortcode(shortcode, nil, p), nil }
321322
}
322323
}
323324

‎hugolib/site.go‎

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -986,31 +986,35 @@ func (s *Site) setupSitePages() {
986986
s.Info.LastChange = siteLastChange
987987
}
988988

989-
func (s *Site) render() (err error) {
989+
func (s *Site) render(outFormatIdx int) (err error) {
990+
991+
if outFormatIdx == 0 {
992+
if err = s.preparePages(); err != nil {
993+
return
994+
}
995+
s.timerStep("prepare pages")
996+
997+
// Aliases must be rendered before pages.
998+
// Some sites, Hugo docs included, have faulty alias definitions that point
999+
// to itself or another real page. These will be overwritten in the next
1000+
// step.
1001+
if err = s.renderAliases(); err != nil {
1002+
return
1003+
}
1004+
s.timerStep("render and write aliases")
9901005

991-
if err = s.preparePages(); err != nil {
992-
return
9931006
}
994-
s.timerStep("prepare pages")
9951007

996-
// Aliases must be rendered before pages.
997-
// Some sites, Hugo docs included, have faulty alias definitions that point
998-
// to itself or another real page. These will be overwritten in the next
999-
// step.
1000-
if err = s.renderAliases(); err != nil {
1008+
if err = s.renderPages(); err != nil {
10011009
return
10021010
}
1003-
s.timerStep("render and write aliases")
1011+
1012+
s.timerStep("render and write pages")
10041013

10051014
// TODO(bep) render consider this, ref. render404 etc.
1006-
s.initRenderFormats()
1007-
for _, rf := range s.renderFormats {
1008-
s.rc = &siteRenderingContext{Format: rf}
1009-
if err = s.renderPages(); err != nil {
1010-
return
1011-
}
1015+
if outFormatIdx > 0 {
1016+
return
10121017
}
1013-
s.timerStep("render and write pages")
10141018

10151019
if err = s.renderSitemap(); err != nil {
10161020
return

0 commit comments

Comments
 (0)