diff options
Diffstat (limited to 'hugolib')
-rw-r--r-- | hugolib/config.go | 1 | ||||
-rw-r--r-- | hugolib/hugo_sites.go | 2 | ||||
-rw-r--r-- | hugolib/hugo_sites_build.go | 2 | ||||
-rw-r--r-- | hugolib/site.go | 4 | ||||
-rw-r--r-- | hugolib/site_render.go | 7 |
5 files changed, 12 insertions, 4 deletions
diff --git a/hugolib/config.go b/hugolib/config.go index d0ade018f..acfa0704d 100644 --- a/hugolib/config.go +++ b/hugolib/config.go @@ -152,6 +152,7 @@ func loadDefaultSettingsFor(v *viper.Viper) error { v.SetDefault("ignoreFiles", make([]string, 0)) v.SetDefault("disableAliases", false) v.SetDefault("debug", false) + v.SetDefault("disableFastRender", false) return nil } diff --git a/hugolib/hugo_sites.go b/hugolib/hugo_sites.go index e763588bd..6e2340903 100644 --- a/hugolib/hugo_sites.go +++ b/hugolib/hugo_sites.go @@ -280,6 +280,8 @@ type BuildCfg struct { SkipRender bool // Use this to indicate what changed (for rebuilds). whatChanged *whatChanged + // Recently visited URLs. This is used for partial re-rendering. + RecentlyVisited map[string]bool } func (h *HugoSites) renderCrossSitesArtifacts() error { diff --git a/hugolib/hugo_sites_build.go b/hugolib/hugo_sites_build.go index b3e0e8bdc..c0749e388 100644 --- a/hugolib/hugo_sites_build.go +++ b/hugolib/hugo_sites_build.go @@ -230,7 +230,7 @@ func (h *HugoSites) render(config *BuildCfg) error { s.preparePagesForRender(config) if !config.SkipRender { - if err := s.render(i); err != nil { + if err := s.render(config, i); err != nil { return err } } diff --git a/hugolib/site.go b/hugolib/site.go index f9430b272..28414c7d4 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -893,7 +893,7 @@ func (s *Site) setupSitePages() { s.Info.LastChange = siteLastChange } -func (s *Site) render(outFormatIdx int) (err error) { +func (s *Site) render(config *BuildCfg, outFormatIdx int) (err error) { if outFormatIdx == 0 { if err = s.preparePages(); err != nil { @@ -917,7 +917,7 @@ func (s *Site) render(outFormatIdx int) (err error) { } - if err = s.renderPages(); err != nil { + if err = s.renderPages(config.RecentlyVisited); err != nil { return } diff --git a/hugolib/site_render.go b/hugolib/site_render.go index 42433a70a..4118f3eef 100644 --- a/hugolib/site_render.go +++ b/hugolib/site_render.go @@ -27,7 +27,7 @@ import ( // renderPages renders pages each corresponding to a markdown file. // TODO(bep np doc -func (s *Site) renderPages() error { +func (s *Site) renderPages(filter map[string]bool) error { results := make(chan error) pages := make(chan *Page) @@ -44,7 +44,12 @@ func (s *Site) renderPages() error { go pageRenderer(s, pages, results, wg) } + hasFilter := filter != nil && len(filter) > 0 + for _, page := range s.Pages { + if hasFilter && !filter[page.RelPermalink()] { + continue + } pages <- page } |