shithub: hugo

Download patch

ref: f023dfd7636f73b11c94e86a05c6273941d52c58
parent: 5b9c2a40f180587de037122e3cd9ac0f3ce64f5e
author: Bjørn Erik Pedersen <[email protected]>
date: Wed Jul 27 06:49:42 EDT 2016

Move the Build* methods to HugoSites

See #2309

--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -713,43 +713,13 @@
 }
 
 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.
--- a/hugolib/hugo_sites.go
+++ b/hugolib/hugo_sites.go
@@ -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
 
@@ -22,4 +30,53 @@
 	for i, s := range h {
 		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
+
 }