}
}
-func build() {
+func build(watches ...bool) {
utils.CheckErr(copyStatic(), fmt.Sprintf("Error copying static files to %s", Config.GetAbsPath(Config.PublishDir)))
- utils.StopOnErr(buildSite())
+ watch := false
+ if len(watches) > 0 && watches[0] {
+ watch = true
+ }
+ utils.StopOnErr(buildSite(BuildWatch || watch))
if BuildWatch {
fmt.Println("Watching for changes in", Config.GetAbsPath(Config.ContentDir))
return a
}
-func buildSite() (err error) {
+func buildSite(watching ...bool) (err error) {
startTime := time.Now()
site := &hugolib.Site{Config: *Config}
+ if len(watching) > 0 && watching[0] {
+ site.RunMode.Watching = true
+ }
err = site.Build()
if err != nil {
return
// Ignoring temp files created by editors (vim)
if !strings.HasSuffix(ev.Name, "~") && !strings.HasSuffix(ev.Name, ".swp") {
fmt.Println("Change detected, rebuilding site\n")
- utils.StopOnErr(buildSite())
+ utils.StopOnErr(buildSite(true))
}
}
}
Target target.Output
Alias target.AliasPublisher
Completed chan bool
+ RunMode runmode
}
type SiteInfo struct {
Config *Config
}
+type runmode struct {
+ Watching bool
+}
+
+func (s *Site) Running() bool {
+ return s.RunMode.Watching
+}
+
func init() {
DefaultTimer = nitro.Initalize()
}
go func() {
err = s.renderThing(d, layout, renderWriter)
if err != nil {
- panic(err)
+ // Behavior here should be dependent on if running in server or watch mode.
+ fmt.Println(fmt.Errorf("Rendering error: %v", err))
+ if !s.Running() {
+ os.Exit(-1)
+ }
}
}()