Skip to content

Commit

Permalink
hugolib: Prepare render per output format
Browse files Browse the repository at this point in the history
See #3220
  • Loading branch information
bep committed May 13, 2017
1 parent 1e4d082 commit 2bcbf10
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 31 deletions.
8 changes: 7 additions & 1 deletion hugolib/hugo_sites.go
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -492,7 +492,13 @@ func (h *HugoSites) setupTranslations() {
} }
} }


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) pageChan := make(chan *Page)
wg := &sync.WaitGroup{} wg := &sync.WaitGroup{}
numWorkers := getGoMaxProcs() * 4 numWorkers := getGoMaxProcs() * 4
Expand Down
27 changes: 16 additions & 11 deletions hugolib/hugo_sites_build.go
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -203,26 +203,31 @@ func (h *HugoSites) assemble(config *BuildCfg) error {
return err return err
} }


for _, s := range h.Sites {
s.preparePagesForRender(config)
}

return nil return nil


} }


func (h *HugoSites) render(config *BuildCfg) error { 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 { for _, s := range h.Sites {
s.Stats() 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 { if err := h.renderCrossSitesArtifacts(); err != nil {
return err return err
} }
Expand Down
5 changes: 3 additions & 2 deletions hugolib/shortcode.go
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -309,15 +309,16 @@ func executeShortcodeFuncMap(funcs map[string]func() (string, error)) (map[strin
} }


func renderShortcodes(shortcodes map[string]shortcode, p *Page) map[string]func() (string, error) { func renderShortcodes(shortcodes map[string]shortcode, p *Page) map[string]func() (string, error) {

renderedShortcodes := make(map[string]func() (string, error)) renderedShortcodes := make(map[string]func() (string, error))


for key, sc := range shortcodes { for key, sc := range shortcodes {
if sc.err != nil { if sc.err != nil {
// need to have something to replace with // need to have something to replace with
renderedShortcodes[key] = emptyShortcodeFn renderedShortcodes[key] = emptyShortcodeFn
} else { } else {
shorctode := sc shortcode := sc
renderedShortcodes[key] = func() (string, error) { return renderShortcode(shorctode, nil, p), nil } renderedShortcodes[key] = func() (string, error) { return renderShortcode(shortcode, nil, p), nil }
} }
} }


Expand Down
38 changes: 21 additions & 17 deletions hugolib/site.go
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -986,31 +986,35 @@ func (s *Site) setupSitePages() {
s.Info.LastChange = siteLastChange s.Info.LastChange = siteLastChange
} }


func (s *Site) render() (err error) { func (s *Site) render(outFormatIdx int) (err error) {

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")


if err = s.preparePages(); err != nil {
return
} }
s.timerStep("prepare pages")


// Aliases must be rendered before pages. if err = s.renderPages(); err != nil {
// 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 return
} }
s.timerStep("render and write aliases")
s.timerStep("render and write pages")


// TODO(bep) render consider this, ref. render404 etc. // TODO(bep) render consider this, ref. render404 etc.
s.initRenderFormats() if outFormatIdx > 0 {
for _, rf := range s.renderFormats { return
s.rc = &siteRenderingContext{Format: rf}
if err = s.renderPages(); err != nil {
return
}
} }
s.timerStep("render and write pages")


if err = s.renderSitemap(); err != nil { if err = s.renderSitemap(); err != nil {
return return
Expand Down

0 comments on commit 2bcbf10

Please sign in to comment.