From 4f96aa28d6db62d0205b58cd32226f456fd382e6 Mon Sep 17 00:00:00 2001 From: asoseil Date: Fri, 29 Dec 2017 19:36:48 +0100 Subject: [PATCH 1/4] ineffassign fixed --- realize/projects.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/realize/projects.go b/realize/projects.go index 6c9fd9a..1033f29 100644 --- a/realize/projects.go +++ b/realize/projects.go @@ -224,7 +224,6 @@ func (p *Project) Reload(path string, stop <-chan bool) { return } if install.Err == nil && build.Err == nil && p.Tools.Run.Status { - var start time.Time result := make(chan Response) go func() { for { @@ -247,7 +246,6 @@ func (p *Project) Reload(path string, stop <-chan bool) { }() go func() { log.Println(p.pname(p.Name, 1), ":", "Running..") - start = time.Now() err := p.run(p.Path, result, stop) if err != nil { msg := fmt.Sprintln(p.pname(p.Name, 2), ":", Red.Regular(err)) From e4bf48f2195d37c3b02c65ef2c77de01a523672c Mon Sep 17 00:00:00 2001 From: asoseil Date: Fri, 29 Dec 2017 19:38:20 +0100 Subject: [PATCH 2/4] misspell fixed --- realize/cli_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/realize/cli_test.go b/realize/cli_test.go index cd19236..852eaa2 100644 --- a/realize/cli_test.go +++ b/realize/cli_test.go @@ -54,8 +54,8 @@ func TestLogWriter_Write(t *testing.T) { log.SetOutput(&buf) w := LogWriter{} input := "" - int, err := w.Write([]byte(input)) - if err != nil || int > 0 { - t.Error("Unexpected error", err, "string lenght should be 0 instead", int) + val, err := w.Write([]byte(input)) + if err != nil || val > 0 { + t.Error("Unexpected error", err, "string length should be 0 instead", val) } } From ca6e2b84dc8fa37c081bbbab0db9c787dab6324b Mon Sep 17 00:00:00 2001 From: asoseil Date: Wed, 3 Jan 2018 15:32:50 +0100 Subject: [PATCH 3/4] tools fixed --- realize/projects.go | 13 ++++++++++--- realize/tools.go | 5 +++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/realize/projects.go b/realize/projects.go index 1033f29..6f93f2a 100644 --- a/realize/projects.go +++ b/realize/projects.go @@ -186,7 +186,10 @@ func (p *Project) Reload(path string, stop <-chan bool) { } // Go supported tools if len(path) > 0 { - fi, err := os.Stat(path) + fi, err := os.Stat(filepath.Dir(path)) + if filepath.Ext(path) == "" { + fi, err = os.Stat(path) + } if err != nil { p.Err(err) } @@ -282,7 +285,7 @@ L: for { select { case event := <-p.watcher.Events(): - if p.parent.Settings.Debug { + if p.parent.Settings.Recovery.Events { 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 { @@ -401,6 +404,7 @@ func (p *Project) tools(stop <-chan bool, path string, fi os.FileInfo) { go func() { for i := 0; i < v.NumField()-1; i++ { tool := v.Field(i).Interface().(Tool) + tool.parent = p if tool.Status && tool.isTool { if fi.IsDir() { if tool.dir { @@ -421,6 +425,9 @@ func (p *Project) tools(stop <-chan bool, path string, fi os.FileInfo) { return case r := <-result: if r.Err != nil { + if fi.IsDir(){ + path, _ = filepath.Abs(fi.Name()) + } msg = fmt.Sprintln(p.pname(p.Name, 2), ":", Red.Bold(r.Name), Red.Regular("there are some errors in"), ":", Magenta.Bold(path)) buff := BufferOut{Time: time.Now(), Text: "there are some errors in", Path: path, Type: r.Name, Stream: r.Err.Error()} p.stamp("error", buff, msg, r.Err.Error()) @@ -470,9 +477,9 @@ func (p *Project) walk(path string, info os.FileInfo, err error) error { if p.Validate(path, true) { result := p.watcher.Walk(path, p.init) if result != "" { - p.tools(p.stop, path, info) if info.IsDir() { // tools dir + p.tools(p.stop, path, info) p.folders++ } else { // tools files diff --git a/realize/tools.go b/realize/tools.go index ae0b36f..1e51279 100644 --- a/realize/tools.go +++ b/realize/tools.go @@ -4,6 +4,7 @@ import ( "bytes" "errors" "io/ioutil" + "log" "os/exec" "path/filepath" "strings" @@ -21,6 +22,7 @@ type Tool struct { method []string cmd []string name string + parent *Project } // Tools go @@ -117,6 +119,9 @@ func (t *Tool) Exec(path string, stop <-chan bool) (response Response) { path = filepath.Dir(path) } if s := ext(path); s == "" || s == "go" { + if t.parent.parent.Settings.Recovery.Tools { + log.Println("Tool:", t.name, path, args) + } var out, stderr bytes.Buffer done := make(chan error) args = append(t.cmd, args...) From a27819d0f6e94e72b32e4a743fb5893b0c468468 Mon Sep 17 00:00:00 2001 From: asoseil Date: Wed, 3 Jan 2018 15:33:07 +0100 Subject: [PATCH 4/4] recovery mode options --- .realize.yaml | 8 +++++--- realize/settings.go | 12 ++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.realize.yaml b/.realize.yaml index 3086497..a2586d8 100755 --- a/.realize.yaml +++ b/.realize.yaml @@ -1,10 +1,12 @@ settings: - debug: true + recovery: + events: true + tools: true legacy: force: false interval: 0s server: - status: true + status: false open: true port: 3000 host: localhost @@ -13,7 +15,7 @@ schema: path: . commands: generate: - status: true + status: false install: status: true vet: diff --git a/realize/settings.go b/realize/settings.go index 8a1ea8d..bdc10eb 100644 --- a/realize/settings.go +++ b/realize/settings.go @@ -29,10 +29,14 @@ const ( // Settings defines a group of general settings and options type Settings struct { Files `yaml:"files,omitempty" json:"files,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"` + FileLimit int32 `yaml:"flimit,omitempty" json:"flimit,omitempty"` + Legacy Legacy `yaml:"legacy" json:"legacy"` + Recovery Recovery `yaml:"recovery,omitempty" json:"recovery,omitempty"` +} + +type Recovery struct { + Events bool + Tools bool } // Legacy is used to force polling and set a custom interval