diff --git a/.gitignore b/.gitignore index b970e45bb..610abe989 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ hugo docs/public* +hugo.exe +*.swp diff --git a/hugolib/page.go b/hugolib/page.go index 7541257d0..ff00493b2 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -91,7 +91,7 @@ func initializePage(filename string) (page Page) { } func (p *Page) setSection() { - x := strings.Split(p.FileName, "/") + x := strings.Split(p.FileName, string(os.PathSeparator)) if section := x[len(x)-2]; section != "content" { p.Section = section diff --git a/hugolib/site.go b/hugolib/site.go index 5ff3546a1..85f97ddcd 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -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 2a7585242..692db431d 100644 --- 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) {