diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e69de29 diff --git a/realize/projects.go b/realize/projects.go index 3613764..6c9fd9a 100644 --- a/realize/projects.go +++ b/realize/projects.go @@ -284,9 +284,10 @@ L: for { select { case event := <-p.watcher.Events(): + if p.parent.Settings.Debug { + log.Println("Event:", event, "File:", event.Name, "LastFile:", p.lastFile, "Time:", time.Now(), "LastTime:", p.lastTime) + } if time.Now().Truncate(time.Second).After(p.lastTime) || event.Name != p.lastFile { - // event time - eventTime := time.Now() // switch event type switch event.Op { case fsnotify.Chmod: @@ -308,7 +309,7 @@ L: if fi.IsDir() { filepath.Walk(event.Name, p.walk) } else { - if event.Op != fsnotify.Write || (eventTime.Truncate(time.Millisecond).After(fi.ModTime().Truncate(time.Millisecond)) || event.Name != p.lastFile) { + if event.Op != fsnotify.Write || event.Name != p.lastFile { // stop and restart close(p.stop) p.stop = make(chan bool) @@ -363,7 +364,7 @@ func (p *Project) Validate(path string, fiche bool) bool { if err != nil { return false } - if fi.IsDir() || (!fi.IsDir() && fi.Size() > 0) { + if fi.Size() > 0 { return true } return false diff --git a/realize/settings.go b/realize/settings.go index d176a48..8a1ea8d 100644 --- a/realize/settings.go +++ b/realize/settings.go @@ -29,9 +29,10 @@ const ( // Settings defines a group of general settings and options type Settings struct { Files `yaml:"files,omitempty" json:"files,omitempty"` - Legacy Legacy `yaml:"legacy" json:"legacy"` - FileLimit int32 `yaml:"flimit,omitempty" json:"flimit,omitempty"` Recovery bool `yaml:"recovery,omitempty" json:"recovery,omitempty"` + Debug bool `yaml:"debug,omitempty" json:"debug,omitempty"` + FileLimit int32 `yaml:"flimit,omitempty" json:"flimit,omitempty"` + Legacy Legacy `yaml:"legacy" json:"legacy"` } // Legacy is used to force polling and set a custom interval diff --git a/realize/tools.go b/realize/tools.go index bbefa9c..ae0b36f 100644 --- a/realize/tools.go +++ b/realize/tools.go @@ -3,6 +3,7 @@ package realize import ( "bytes" "errors" + "io/ioutil" "os/exec" "path/filepath" "strings" @@ -95,6 +96,18 @@ func (t *Tool) Exec(path string, stop <-chan bool) (response Response) { if filepath.Ext(path) != "" { path = filepath.Dir(path) } + // check if there is at least one go file + matched := false + files, _ := ioutil.ReadDir(path) + for _, f := range files { + matched, _ = filepath.Match("*.go", f.Name()) + if matched { + break + } + } + if !matched { + return + } } else if !strings.HasSuffix(path, ".go") { return }