summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Francia <steve.francia@gmail.com>2015-12-21 19:47:48 -0500
committerSteve Francia <steve.francia@gmail.com>2016-01-25 14:41:47 -0500
commitbcc42c0549263681ef9eada21a9fc4eb2d8ff055 (patch)
tree26c556216239aa751d856c4298e6ee14e4253524
parentf3aa93fa484628316105dac6bfe4cea4b6992a3b (diff)
Separate reading source and processing source operations
-rw-r--r--hugolib/site.go34
1 files changed, 20 insertions, 14 deletions
diff --git a/hugolib/site.go b/hugolib/site.go
index 284bdbe8c..c5a0422ef 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -509,6 +509,7 @@ func readData(f *source.File) (interface{}, error) {
}
func (s *Site) Process() (err error) {
+ s.timerStep("Go initialization")
if err = s.initialize(); err != nil {
return
}
@@ -535,7 +536,6 @@ func (s *Site) Process() (err error) {
return
}
s.setupPrevNext()
- s.timerStep("import pages")
if err = s.BuildSiteMeta(); err != nil {
return
}
@@ -688,21 +688,19 @@ type pageResult struct {
err error
}
-func (s *Site) CreatePages() error {
+func (s *Site) ReadPagesFromSource() chan error {
if s.Source == nil {
panic(fmt.Sprintf("s.Source not set %s", s.absContentDir()))
}
+
if len(s.Source.Files()) < 1 {
return nil
}
files := s.Source.Files()
-
results := make(chan HandledResult)
filechan := make(chan *source.File)
-
procs := getGoMaxProcs()
-
wg := &sync.WaitGroup{}
wg.Add(procs * 4)
@@ -721,18 +719,19 @@ func (s *Site) CreatePages() error {
}
close(filechan)
-
wg.Wait()
-
close(results)
- readErrs := <-errs
+ return errs
+}
- results = make(chan HandledResult)
+func (s *Site) ConvertSource() chan error {
+ errs := make(chan error)
+ results := make(chan HandledResult)
pageChan := make(chan *Page)
fileConvChan := make(chan *source.File)
-
- wg = &sync.WaitGroup{}
+ procs := getGoMaxProcs()
+ wg := &sync.WaitGroup{}
wg.Add(2 * procs * 4)
for i := 0; i < procs*4; i++ {
@@ -752,12 +751,18 @@ func (s *Site) CreatePages() error {
close(pageChan)
close(fileConvChan)
-
wg.Wait()
-
close(results)
- renderErrs := <-errs
+ return errs
+}
+
+func (s *Site) CreatePages() error {
+ readErrs := <-s.ReadPagesFromSource()
+ s.timerStep("read pages from source")
+
+ renderErrs := <-s.ConvertSource()
+ s.timerStep("convert source")
if renderErrs == nil && readErrs == nil {
return nil
@@ -768,6 +773,7 @@ func (s *Site) CreatePages() error {
if readErrs == nil {
return renderErrs
}
+
return fmt.Errorf("%s\n%s", readErrs, renderErrs)
}