Adding error message when no content pages exists.
authorNoah Campbell <noahcampbell@gmail.com>
Thu, 1 Aug 2013 18:55:18 +0000 (11:55 -0700)
committerNoah Campbell <noahcampbell@gmail.com>
Thu, 1 Aug 2013 20:27:56 +0000 (13:27 -0700)
hugolib/site.go
main.go

index 5ff3546a113d672b78cf09465fbab081f5d7265b..85f97ddcd419cb4e3493c8c9972d38458940a687 100644 (file)
@@ -24,6 +24,7 @@ import (
        "path/filepath"
        "strings"
        "time"
+       "errors"
        //"sync"
 )
 
@@ -59,10 +60,13 @@ func NewSite(config *Config) *Site {
        return &Site{c: *config, timer: nitro.Initalize()}
 }
 
-func (site *Site) Build() {
-       site.Process()
+func (site *Site) Build() (err error) {
+       if err = site.Process(); err != nil {
+               return
+       }
        site.Render()
        site.Write()
+       return nil
 }
 
 func (site *Site) Analyze() {
@@ -70,14 +74,17 @@ func (site *Site) Analyze() {
        site.checkDescriptions()
 }
 
-func (site *Site) Process() {
+func (site *Site) Process() (err error){
        site.initialize()
        site.prepTemplates()
        site.timer.Step("initialize & template prep")
        site.CreatePages()
        site.timer.Step("import pages")
-       site.BuildSiteMeta()
+       if err = site.BuildSiteMeta(); err != nil {
+               return
+       }
        site.timer.Step("build indexes")
+       return
 }
 
 func (site *Site) Render() {
@@ -213,7 +220,7 @@ func (s *Site) CreatePages() {
        s.Pages.Sort()
 }
 
-func (s *Site) BuildSiteMeta() {
+func (s *Site) BuildSiteMeta() (err error) {
        s.Indexes = make(IndexList)
        s.Sections = make(Index)
 
@@ -243,8 +250,11 @@ func (s *Site) BuildSiteMeta() {
        }
 
        s.Info.Indexes = s.Indexes.BuildOrderedIndexList()
-
+       if len(s.Pages) == 0 {
+               return errors.New(fmt.Sprintf("Unable to build site metadata, no pages found in directory %s", s.c.ContentDir))
+       }
        s.Info.LastChange = s.Pages[0].Date
+       return
 }
 
 func (s *Site) RenderPages() {
diff --git a/main.go b/main.go
index 2a7585242c81664f310ef7c498c76420ba486cf0..692db431d95155189a28181ad0a0db7101b0016f 100644 (file)
--- a/main.go
+++ b/main.go
@@ -90,7 +90,7 @@ func main() {
                defer pprof.StopCPUProfile()
 
                for i := 0; i < *cpuprofile; i++ {
-                       _ = buildSite(config)
+                       _, _ = buildSite(config)
                }
        }
 
@@ -108,15 +108,20 @@ func main() {
 
        if *watchMode {
                fmt.Println("Watching for changes. Press ctrl+c to stop")
-               _ = buildSite(config)
+               _, err = buildSite(config)
+               if err != nil {
+                       fmt.Println(err)
+                       return
+               }
                err := NewWatcher(config, *port, *server)
-
                if err != nil {
                        fmt.Println(err)
                }
        }
 
-       _ = buildSite(config)
+       if _, err = buildSite(config); err != nil {
+               fmt.Println(err)
+       }
 
        if *server {
                serve(*port, config)
@@ -135,13 +140,16 @@ func serve(port string, config *hugolib.Config) {
        panic(http.ListenAndServe(":"+port, http.FileServer(http.Dir(config.GetAbsPath(config.PublishDir)))))
 }
 
-func buildSite(config *hugolib.Config) *hugolib.Site {
+func buildSite(config *hugolib.Config) (site *hugolib.Site, err error) {
        startTime := time.Now()
-       site := hugolib.NewSite(config)
-       site.Build()
+       site = hugolib.NewSite(config)
+       err = site.Build()
+       if err != nil {
+               return
+       }
        site.Stats()
        fmt.Printf("in %v ms\n", int(1000*time.Since(startTime).Seconds()))
-       return site
+       return site, nil
 }
 
 func watchChange(c *hugolib.Config) {