ref: 2bcbf104006e0ec03be4fd500f2519301d460f8c
parent: 1e4d082cf5b92fedbc60b1b4f0e9d1ee6ec45e33
author: Bjørn Erik Pedersen <[email protected]>
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