ref: 2bcbf104006e0ec03be4fd500f2519301d460f8c
parent: 1e4d082cf5b92fedbc60b1b4f0e9d1ee6ec45e33
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Fri May 5 05:24:37 EDT 2017
hugolib: Prepare render per output format See #3220
--- a/hugolib/hugo_sites.go
+++ b/hugolib/hugo_sites.go
@@ -492,7 +492,13 @@
}
}
-func (s *Site) preparePagesForRender(cfg *BuildCfg) {+func (s *Site) preparePagesForRender(outFormatIdx int, cfg *BuildCfg) {+
+ if outFormatIdx > 0 {+ // TODO(bep) for now
+ return
+ }
+
pageChan := make(chan *Page)
wg := &sync.WaitGroup{}numWorkers := getGoMaxProcs() * 4
--- a/hugolib/hugo_sites_build.go
+++ b/hugolib/hugo_sites_build.go
@@ -203,26 +203,31 @@
return err
}
- for _, s := range h.Sites {- s.preparePagesForRender(config)
- }
-
return nil
}
func (h *HugoSites) render(config *BuildCfg) error {- if !config.SkipRender {- for _, s := range h.Sites {- if err := s.render(); err != nil {- return err
- }
- if config.PrintStats {- s.Stats()
+ for _, s := range h.Sites {+ s.initRenderFormats()
+ for i, rf := range s.renderFormats {+ s.rc = &siteRenderingContext{Format: rf}+ s.preparePagesForRender(i, config)
+
+ if !config.SkipRender {+ if err := s.render(i); err != nil {+ return err
+ }
}
}
+ if !config.SkipRender && config.PrintStats {+ s.Stats()
+ }
+ }
+
+ if !config.SkipRender { if err := h.renderCrossSitesArtifacts(); err != nil {return err
}
--- a/hugolib/shortcode.go
+++ b/hugolib/shortcode.go
@@ -309,6 +309,7 @@
}
func renderShortcodes(shortcodes map[string]shortcode, p *Page) map[string]func() (string, error) {+
renderedShortcodes := make(map[string]func() (string, error))
for key, sc := range shortcodes {@@ -316,8 +317,8 @@
// need to have something to replace with
renderedShortcodes[key] = emptyShortcodeFn
} else {- shorctode := sc
- renderedShortcodes[key] = func() (string, error) { return renderShortcode(shorctode, nil, p), nil }+ shortcode := sc
+ renderedShortcodes[key] = func() (string, error) { return renderShortcode(shortcode, nil, p), nil }}
}
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -986,31 +986,35 @@
s.Info.LastChange = siteLastChange
}
-func (s *Site) render() (err error) {+func (s *Site) render(outFormatIdx int) (err error) {- if err = s.preparePages(); err != nil {- return
+ if outFormatIdx == 0 {+ if err = s.preparePages(); err != nil {+ return
+ }
+ s.timerStep("prepare pages")+
+ // Aliases must be rendered before pages.
+ // Some sites, Hugo docs included, have faulty alias definitions that point
+ // to itself or another real page. These will be overwritten in the next
+ // step.
+ if err = s.renderAliases(); err != nil {+ return
+ }
+ s.timerStep("render and write aliases")+
}
- s.timerStep("prepare pages")- // Aliases must be rendered before pages.
- // Some sites, Hugo docs included, have faulty alias definitions that point
- // to itself or another real page. These will be overwritten in the next
- // step.
- if err = s.renderAliases(); err != nil {+ if err = s.renderPages(); err != nil {return
}
- s.timerStep("render and write aliases")+ s.timerStep("render and write pages")+
// TODO(bep) render consider this, ref. render404 etc.
- s.initRenderFormats()
- for _, rf := range s.renderFormats {- s.rc = &siteRenderingContext{Format: rf}- if err = s.renderPages(); err != nil {- return
- }
+ if outFormatIdx > 0 {+ return
}
- s.timerStep("render and write pages") if err = s.renderSitemap(); err != nil {return
--
⑨