diff options
author | rawfalafel <[email protected]> | 2013-08-19 01:17:37 -0400 |
---|---|---|
committer | rawfalafel <[email protected]> | 2013-08-19 01:17:37 -0400 |
commit | 2dcdd6737886986ea81d4c1b06c6d2bc88b59f9d (patch) | |
tree | fbf0cf9b3c3ae3110d01952360d5d5a2e55229c9 /main.go | |
parent | c4bcdebc595cc3d6c6abcddb6e0870057345daae (diff) | |
download | hugo-2dcdd6737886986ea81d4c1b06c6d2bc88b59f9d.tar.gz hugo-2dcdd6737886986ea81d4c1b06c6d2bc88b59f9d.zip |
Watch StaticDir and sync to PublishDir on change
New behavior adds a special case for file changes inside the static directory to fsync PublishDir
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 26 |
1 files changed, 18 insertions, 8 deletions
@@ -24,6 +24,7 @@ import ( "os" "path/filepath" "runtime/pprof" + "strings" "sync" "time" ) @@ -95,8 +96,7 @@ func main() { } } - // Copy Static to Destination first - err := fsync.SyncDel(config.GetAbsPath(config.PublishDir+"/"), config.GetAbsPath(config.StaticDir+"/")) + err := copyStatic(config) if err != nil { log.Fatalf("Error copying static files to %s: %v", config.GetAbsPath(config.PublishDir), err) } @@ -130,6 +130,11 @@ func main() { } +func copyStatic(config *hugolib.Config) error { + // Copy Static to Destination + return fsync.SyncDel(config.GetAbsPath(config.PublishDir+"/"), config.GetAbsPath(config.StaticDir+"/")) +} + func serve(port string, config *hugolib.Config) { if config.Verbose { @@ -153,9 +158,14 @@ func buildSite(config *hugolib.Config) (site *hugolib.Site, err error) { return site, nil } -func watchChange(c *hugolib.Config) { - fmt.Println("Change detected, rebuilding site\n") - buildSite(c) +func watchChange(c *hugolib.Config, ev *fsnotify.FileEvent) { + if strings.HasPrefix(ev.Name, c.GetAbsPath(c.StaticDir)) { + fmt.Println("Static file changed, syncing\n") + copyStatic(c) + } else { + fmt.Println("Change detected, rebuilding site\n") + buildSite(c) + } } func NewWatcher(c *hugolib.Config, port string, server bool) error { @@ -163,8 +173,8 @@ func NewWatcher(c *hugolib.Config, port string, server bool) error { var wg sync.WaitGroup if err != nil { - return err fmt.Println(err) + return err } defer watcher.Close() @@ -174,11 +184,10 @@ func NewWatcher(c *hugolib.Config, port string, server bool) error { for { select { case ev := <-watcher.Event: - var _ = ev if c.Verbose { fmt.Println(ev) } - watchChange(c) + watchChange(c, ev) // TODO add newly created directories to the watch list case err := <-watcher.Error: if err != nil { @@ -218,6 +227,7 @@ func getDirList(c *hugolib.Config) []string { filepath.Walk(c.GetAbsPath(c.ContentDir), walker) filepath.Walk(c.GetAbsPath(c.LayoutDir), walker) + filepath.Walk(c.GetAbsPath(c.StaticDir), walker) return a } |