diff --git a/commands/hugo.go b/commands/hugo.go index b16f7806f..d3681f1fc 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -1,4 +1,4 @@ -// Copyright © 2013 Steve Francia . +// Copyright © 2013-2015 Steve Francia . // // Licensed under the Simple Public License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -36,6 +36,7 @@ import ( jww "github.com/spf13/jwalterweatherman" "github.com/spf13/nitro" "github.com/spf13/viper" + "gopkg.in/fsnotify.v1" ) //HugoCmd is Hugo's root command. Every other command attached to HugoCmd is a child command to it. @@ -349,7 +350,7 @@ func buildSite(watching ...bool) (err error) { return nil } -//NewWatcher creates a new watcher to watch filesystem events. +// NewWatcher creates a new watcher to watch filesystem events. func NewWatcher(port int) error { if runtime.GOOS == "darwin" { tweakLimit() @@ -369,14 +370,14 @@ func NewWatcher(port int) error { for _, d := range getDirList() { if d != "" { - _ = watcher.Watch(d) + _ = watcher.Add(d) } } go func() { for { select { - case evs := <-watcher.Event: + case evs := <-watcher.Events: jww.INFO.Println("File System Event:", evs) staticChanged := false @@ -385,12 +386,12 @@ func NewWatcher(port int) error { for _, ev := range evs { ext := filepath.Ext(ev.Name) - istemp := strings.HasSuffix(ext, "~") || (ext == ".swp") || (ext == ".swx") || (ext == ".tmp") || (strings.HasPrefix(ext, ".goutputstream")) + istemp := strings.HasSuffix(ext, "~") || (ext == ".swp") || (ext == ".swx") || (ext == ".tmp") || strings.HasPrefix(ext, ".goutputstream") if istemp { continue } // renames are always followed with Create/Modify - if ev.IsRename() { + if ev.Op&fsnotify.Rename == fsnotify.Rename { continue } @@ -406,8 +407,8 @@ func NewWatcher(port int) error { // add new directory to watch list if s, err := os.Stat(ev.Name); err == nil && s.Mode().IsDir() { - if ev.IsCreate() { - watcher.Watch(ev.Name) + if ev.Op&fsnotify.Create == fsnotify.Create { + watcher.Add(ev.Name) } } } @@ -442,7 +443,7 @@ func NewWatcher(port int) error { livereload.ForceRefresh() } } - case err := <-watcher.Error: + case err := <-watcher.Errors: if err != nil { fmt.Println("error:", err) } diff --git a/watcher/batcher.go b/watcher/batcher.go index 479603f1e..e5733d20b 100644 --- a/watcher/batcher.go +++ b/watcher/batcher.go @@ -1,9 +1,22 @@ +// Copyright © 2013-2015 Steve Francia . +// +// Licensed under the Simple Public License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://opensource.org/licenses/Simple-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package watcher import ( "time" - "gopkg.in/fsnotify.v0" + "gopkg.in/fsnotify.v1" ) type Batcher struct { @@ -11,7 +24,7 @@ type Batcher struct { interval time.Duration done chan struct{} - Event chan []*fsnotify.FileEvent // Events are returned on this channel + Events chan []fsnotify.Event // Events are returned on this channel } func New(interval time.Duration) (*Batcher, error) { @@ -21,7 +34,7 @@ func New(interval time.Duration) (*Batcher, error) { batcher.Watcher = watcher batcher.interval = interval batcher.done = make(chan struct{}, 1) - batcher.Event = make(chan []*fsnotify.FileEvent, 1) + batcher.Events = make(chan []fsnotify.Event, 1) if err == nil { go batcher.run() @@ -32,18 +45,18 @@ func New(interval time.Duration) (*Batcher, error) { func (b *Batcher) run() { tick := time.Tick(b.interval) - evs := make([]*fsnotify.FileEvent, 0) + evs := make([]fsnotify.Event, 0) OuterLoop: for { select { - case ev := <-b.Watcher.Event: + case ev := <-b.Watcher.Events: evs = append(evs, ev) case <-tick: if len(evs) == 0 { continue } - b.Event <- evs - evs = make([]*fsnotify.FileEvent, 0) + b.Events <- evs + evs = make([]fsnotify.Event, 0) case <-b.done: break OuterLoop }