tools fixed

This commit is contained in:
asoseil 2018-01-03 15:32:50 +01:00
parent e4bf48f219
commit ca6e2b84dc
2 changed files with 15 additions and 3 deletions

View File

@ -186,7 +186,10 @@ func (p *Project) Reload(path string, stop <-chan bool) {
} }
// Go supported tools // Go supported tools
if len(path) > 0 { 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 { if err != nil {
p.Err(err) p.Err(err)
} }
@ -282,7 +285,7 @@ L:
for { for {
select { select {
case event := <-p.watcher.Events(): 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) 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 { 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() { go func() {
for i := 0; i < v.NumField()-1; i++ { for i := 0; i < v.NumField()-1; i++ {
tool := v.Field(i).Interface().(Tool) tool := v.Field(i).Interface().(Tool)
tool.parent = p
if tool.Status && tool.isTool { if tool.Status && tool.isTool {
if fi.IsDir() { if fi.IsDir() {
if tool.dir { if tool.dir {
@ -421,6 +425,9 @@ func (p *Project) tools(stop <-chan bool, path string, fi os.FileInfo) {
return return
case r := <-result: case r := <-result:
if r.Err != nil { 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)) 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()} 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()) 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) { if p.Validate(path, true) {
result := p.watcher.Walk(path, p.init) result := p.watcher.Walk(path, p.init)
if result != "" { if result != "" {
p.tools(p.stop, path, info)
if info.IsDir() { if info.IsDir() {
// tools dir // tools dir
p.tools(p.stop, path, info)
p.folders++ p.folders++
} else { } else {
// tools files // tools files

View File

@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"errors" "errors"
"io/ioutil" "io/ioutil"
"log"
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"strings" "strings"
@ -21,6 +22,7 @@ type Tool struct {
method []string method []string
cmd []string cmd []string
name string name string
parent *Project
} }
// Tools go // Tools go
@ -117,6 +119,9 @@ func (t *Tool) Exec(path string, stop <-chan bool) (response Response) {
path = filepath.Dir(path) path = filepath.Dir(path)
} }
if s := ext(path); s == "" || s == "go" { 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 var out, stderr bytes.Buffer
done := make(chan error) done := make(chan error)
args = append(t.cmd, args...) args = append(t.cmd, args...)