summaryrefslogtreecommitdiffstats
path: root/hugolib
diff options
context:
space:
mode:
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/config.go1
-rw-r--r--hugolib/hugo_sites.go2
-rw-r--r--hugolib/hugo_sites_build.go2
-rw-r--r--hugolib/site.go4
-rw-r--r--hugolib/site_render.go7
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
}