summaryrefslogtreecommitdiffstats
path: root/hugolib/site.go
diff options
context:
space:
mode:
Diffstat (limited to 'hugolib/site.go')
-rw-r--r--hugolib/site.go104
1 files changed, 14 insertions, 90 deletions
diff --git a/hugolib/site.go b/hugolib/site.go
index b1441ca8a..882874db9 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -14,7 +14,6 @@
package hugolib
import (
- "context"
"fmt"
"html/template"
"io"
@@ -29,6 +28,8 @@ import (
"strings"
"time"
+ "github.com/gohugoio/hugo/hugofs/files"
+
"github.com/gohugoio/hugo/common/maps"
"github.com/pkg/errors"
@@ -45,7 +46,6 @@ import (
"github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/lazy"
- "golang.org/x/sync/errgroup"
"github.com/gohugoio/hugo/media"
@@ -1028,7 +1028,8 @@ func (s *Site) processPartial(events []fsnotify.Event) (whatChanged, error) {
removed = true
}
}
- if removed && IsContentFile(ev.Name) {
+
+ if removed && files.IsContentFile(ev.Name) {
h.removePageByFilename(ev.Name)
}
@@ -1058,7 +1059,7 @@ func (s *Site) processPartial(events []fsnotify.Event) (whatChanged, error) {
filenamesChanged = append(filenamesChanged, contentFilesChanged...)
}
- filenamesChanged = helpers.UniqueStrings(filenamesChanged)
+ filenamesChanged = helpers.UniqueStringsReuse(filenamesChanged)
if err := s.readAndProcessContent(filenamesChanged...); err != nil {
return whatChanged{}, err
@@ -1078,10 +1079,12 @@ func (s *Site) processPartial(events []fsnotify.Event) (whatChanged, error) {
func (s *Site) process(config BuildCfg) (err error) {
if err = s.initialize(); err != nil {
+ err = errors.Wrap(err, "initialize")
return
}
- if err := s.readAndProcessContent(); err != nil {
- return err
+ if err = s.readAndProcessContent(); err != nil {
+ err = errors.Wrap(err, "readAndProcessContent")
+ return
}
return err
@@ -1304,93 +1307,14 @@ func (s *Site) isContentDirEvent(e fsnotify.Event) bool {
return s.BaseFs.IsContent(e.Name)
}
-type contentCaptureResultHandler struct {
- defaultContentProcessor *siteContentProcessor
- contentProcessors map[string]*siteContentProcessor
-}
-
-func (c *contentCaptureResultHandler) getContentProcessor(lang string) *siteContentProcessor {
- proc, found := c.contentProcessors[lang]
- if found {
- return proc
- }
- return c.defaultContentProcessor
-}
-
-func (c *contentCaptureResultHandler) handleSingles(fis ...*fileInfo) {
- for _, fi := range fis {
- proc := c.getContentProcessor(fi.Lang())
- proc.processSingle(fi)
- }
-}
-func (c *contentCaptureResultHandler) handleBundles(d *bundleDirs) {
- for _, b := range d.bundles {
- proc := c.getContentProcessor(b.fi.Lang())
- proc.processBundle(b)
- }
-}
-
-func (c *contentCaptureResultHandler) handleCopyFile(f pathLangFile) {
- proc := c.getContentProcessor(f.Lang())
- proc.processAsset(f)
-}
-
func (s *Site) readAndProcessContent(filenames ...string) error {
-
- ctx := context.Background()
- g, ctx := errgroup.WithContext(ctx)
-
- defaultContentLanguage := s.SourceSpec.DefaultContentLanguage
-
- contentProcessors := make(map[string]*siteContentProcessor)
- var defaultContentProcessor *siteContentProcessor
- sites := s.h.langSite()
- for k, v := range sites {
- if v.language.Disabled {
- continue
- }
- proc := newSiteContentProcessor(ctx, len(filenames) > 0, v)
- contentProcessors[k] = proc
- if k == defaultContentLanguage {
- defaultContentProcessor = proc
- }
- g.Go(func() error {
- return proc.process(ctx)
- })
- }
-
- var (
- handler captureResultHandler
- bundleMap *contentChangeMap
- )
-
- mainHandler := &contentCaptureResultHandler{contentProcessors: contentProcessors, defaultContentProcessor: defaultContentProcessor}
-
sourceSpec := source.NewSourceSpec(s.PathSpec, s.BaseFs.Content.Fs)
- if s.running() {
- // Need to track changes.
- bundleMap = s.h.ContentChanges
- handler = &captureResultHandlerChain{handlers: []captureBundlesHandler{mainHandler, bundleMap}}
-
- } else {
- handler = mainHandler
- }
-
- c := newCapturer(s.Log, sourceSpec, handler, bundleMap, filenames...)
+ proc := newPagesProcessor(s.h, sourceSpec, len(filenames) > 0)
- err1 := c.capture()
+ c := newPagesCollector(sourceSpec, s.Log, s.h.ContentChanges, proc, filenames...)
- for _, proc := range contentProcessors {
- proc.closeInput()
- }
-
- err2 := g.Wait()
-
- if err1 != nil {
- return err1
- }
- return err2
+ return c.Collect()
}
func (s *Site) getMenusFromConfig() navigation.Menus {
@@ -1831,8 +1755,8 @@ func (s *Site) kindFromFileInfoOrSections(fi *fileInfo, sections []string) strin
}
func (s *Site) kindFromSections(sections []string) string {
- if len(sections) == 0 || len(s.siteCfg.taxonomiesConfig) == 0 {
- return page.KindSection
+ if len(sections) == 0 {
+ return page.KindHome
}
sectionPath := path.Join(sections...)