Move the Build* methods to HugoSites

See #2309
This commit is contained in:
Bjørn Erik Pedersen 2016-07-27 10:49:42 +02:00
parent 5b9c2a40f1
commit f023dfd763
2 changed files with 61 additions and 34 deletions

View File

@ -713,43 +713,13 @@ func getDirList() []string {
}
func buildSites(watching ...bool) (err error) {
fmt.Println("Started building site")
t0 := time.Now()
for _, site := range Hugo {
t1 := time.Now()
if len(watching) > 0 && watching[0] {
site.RunMode.Watching = true
}
if err := site.Build(); err != nil {
return err
}
site.Stats(t1)
}
jww.FEEDBACK.Printf("total in %v ms\n", int(1000*time.Since(t0).Seconds()))
return nil
fmt.Println("Started building sites ...")
w := len(watching) > 0 && watching[0]
return Hugo.Build(w, true)
}
func rebuildSites(events []fsnotify.Event) error {
t0 := time.Now()
for _, site := range Hugo {
t1 := time.Now()
if err := site.ReBuild(events); err != nil {
return err
}
site.Stats(t1)
}
jww.FEEDBACK.Printf("total in %v ms\n", int(1000*time.Since(t0).Seconds()))
return nil
return Hugo.Rebuild(events, true)
}
// NewWatcher creates a new watcher to watch filesystem events.

View File

@ -13,6 +13,14 @@
package hugolib
import (
"time"
"github.com/fsnotify/fsnotify"
jww "github.com/spf13/jwalterweatherman"
)
// HugoSites represents the sites to build. Each site represents a language.
type HugoSites []*Site
@ -23,3 +31,52 @@ func (h HugoSites) Reset() {
h[i] = s.Reset()
}
}
// Build builds all sites.
func (h HugoSites) Build(watching, printStats bool) error {
t0 := time.Now()
for _, site := range h {
t1 := time.Now()
site.RunMode.Watching = watching
if err := site.Build(); err != nil {
return err
}
if printStats {
site.Stats(t1)
}
}
if printStats {
jww.FEEDBACK.Printf("total in %v ms\n", int(1000*time.Since(t0).Seconds()))
}
return nil
}
// Rebuild rebuilds all sites.
func (h HugoSites) Rebuild(events []fsnotify.Event, printStats bool) error {
t0 := time.Now()
for _, site := range h {
t1 := time.Now()
if err := site.ReBuild(events); err != nil {
return err
}
if printStats {
site.Stats(t1)
}
}
if printStats {
jww.FEEDBACK.Printf("total in %v ms\n", int(1000*time.Since(t0).Seconds()))
}
return nil
}