Merge pull request #10 from noahcampbell/master

Fixed section labels causing panic on windows.
This commit is contained in:
Steve Francia 2013-08-01 22:00:58 -07:00
commit 47783c1f03
4 changed files with 35 additions and 15 deletions

2
.gitignore vendored
View file

@ -1,2 +1,4 @@
hugo hugo
docs/public* docs/public*
hugo.exe
*.swp

View file

@ -91,7 +91,7 @@ func initializePage(filename string) (page Page) {
} }
func (p *Page) setSection() { 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" { if section := x[len(x)-2]; section != "content" {
p.Section = section p.Section = section

View file

@ -24,6 +24,7 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"time" "time"
"errors"
//"sync" //"sync"
) )
@ -59,10 +60,13 @@ func NewSite(config *Config) *Site {
return &Site{c: *config, timer: nitro.Initalize()} return &Site{c: *config, timer: nitro.Initalize()}
} }
func (site *Site) Build() { func (site *Site) Build() (err error) {
site.Process() if err = site.Process(); err != nil {
return
}
site.Render() site.Render()
site.Write() site.Write()
return nil
} }
func (site *Site) Analyze() { func (site *Site) Analyze() {
@ -70,14 +74,17 @@ func (site *Site) Analyze() {
site.checkDescriptions() site.checkDescriptions()
} }
func (site *Site) Process() { func (site *Site) Process() (err error){
site.initialize() site.initialize()
site.prepTemplates() site.prepTemplates()
site.timer.Step("initialize & template prep") site.timer.Step("initialize & template prep")
site.CreatePages() site.CreatePages()
site.timer.Step("import pages") site.timer.Step("import pages")
site.BuildSiteMeta() if err = site.BuildSiteMeta(); err != nil {
return
}
site.timer.Step("build indexes") site.timer.Step("build indexes")
return
} }
func (site *Site) Render() { func (site *Site) Render() {
@ -213,7 +220,7 @@ func (s *Site) CreatePages() {
s.Pages.Sort() s.Pages.Sort()
} }
func (s *Site) BuildSiteMeta() { func (s *Site) BuildSiteMeta() (err error) {
s.Indexes = make(IndexList) s.Indexes = make(IndexList)
s.Sections = make(Index) s.Sections = make(Index)
@ -243,8 +250,11 @@ func (s *Site) BuildSiteMeta() {
} }
s.Info.Indexes = s.Indexes.BuildOrderedIndexList() 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 s.Info.LastChange = s.Pages[0].Date
return
} }
func (s *Site) RenderPages() { func (s *Site) RenderPages() {

24
main.go
View file

@ -90,7 +90,7 @@ func main() {
defer pprof.StopCPUProfile() defer pprof.StopCPUProfile()
for i := 0; i < *cpuprofile; i++ { for i := 0; i < *cpuprofile; i++ {
_ = buildSite(config) _, _ = buildSite(config)
} }
} }
@ -108,15 +108,20 @@ func main() {
if *watchMode { if *watchMode {
fmt.Println("Watching for changes. Press ctrl+c to stop") 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) err := NewWatcher(config, *port, *server)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
} }
} }
_ = buildSite(config) if _, err = buildSite(config); err != nil {
fmt.Println(err)
}
if *server { if *server {
serve(*port, config) 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))))) 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() startTime := time.Now()
site := hugolib.NewSite(config) site = hugolib.NewSite(config)
site.Build() err = site.Build()
if err != nil {
return
}
site.Stats() site.Stats()
fmt.Printf("in %v ms\n", int(1000*time.Since(startTime).Seconds())) fmt.Printf("in %v ms\n", int(1000*time.Since(startTime).Seconds()))
return site return site, nil
} }
func watchChange(c *hugolib.Config) { func watchChange(c *hugolib.Config) {