Merge pull request #214 from amrfaissal/hotfix-212

Ignore tmp/backup files while using watcher
This commit is contained in:
astaxie 2016-08-19 01:29:29 +08:00 committed by GitHub
commit 146200024c
1 changed files with 23 additions and 8 deletions

View File

@ -17,14 +17,14 @@ package main
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"github.com/howeyc/fsnotify"
"os" "os"
"os/exec" "os/exec"
"regexp"
"runtime" "runtime"
"strings" "strings"
"sync" "sync"
"time" "time"
"github.com/howeyc/fsnotify"
) )
var ( var (
@ -47,8 +47,8 @@ func NewWatcher(paths []string, files []string, isgenerate bool) {
case e := <-watcher.Event: case e := <-watcher.Event:
isbuild := true isbuild := true
// Skip TMP files for Sublime Text. // Skip ignored files
if checkTMPFile(e.Name) { if shouldIgnoreFile(e.Name) {
continue continue
} }
if !checkIfWatchExt(e.Name) { if !checkIfWatchExt(e.Name) {
@ -230,15 +230,30 @@ func Start(appname string) {
started <- true started <- true
} }
// checkTMPFile returns true if the event was for TMP files. // Should ignore filenames generated by
func checkTMPFile(name string) bool { // Emacs, Vim or SublimeText
if strings.HasSuffix(strings.ToLower(name), ".tmp") { func shouldIgnoreFile(filename string) bool {
return true for _, regex := range ignoredFilesRegExps {
r, err := regexp.Compile(regex)
if err != nil {
panic("Could not compile the regex: " + regex)
}
if r.MatchString(filename) {
return true
} else {
continue
}
} }
return false return false
} }
var watchExts = []string{".go"} var watchExts = []string{".go"}
var ignoredFilesRegExps = []string{
`.#(\w+).go`,
`.(\w+).go.swp`,
`(\w+).go~`,
`(\w+).tmp`,
}
// checkIfWatchExt returns true if the name HasSuffix <watch_ext>. // checkIfWatchExt returns true if the name HasSuffix <watch_ext>.
func checkIfWatchExt(name string) bool { func checkIfWatchExt(name string) bool {