From 0d5dcd4718d97930c6ddcc21e7d623c6aeb4ce99 Mon Sep 17 00:00:00 2001 From: alessio Date: Thu, 18 Aug 2016 00:24:06 +0200 Subject: [PATCH] chan for run method --- realize/project.go | 3 ++- realize/watcher.go | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/realize/project.go b/realize/project.go index d8d03e0..7d8f2eb 100644 --- a/realize/project.go +++ b/realize/project.go @@ -23,7 +23,7 @@ type Project struct { Watcher Watcher `yaml:"app_watcher,omitempty"` } -func (p *Project) GoRun(channel chan bool, wr *sync.WaitGroup) error { +func (p *Project) GoRun(channel chan bool, runner chan bool, wr *sync.WaitGroup) error { name := strings.Split(p.Path, "/") stop := make(chan bool,1) var run string @@ -51,6 +51,7 @@ func (p *Project) GoRun(channel chan bool, wr *sync.WaitGroup) error { if err := build.Start(); err != nil { Fail(err.Error()) } + close(runner) in := bufio.NewScanner(stdout) go func() { diff --git a/realize/watcher.go b/realize/watcher.go index 0db6e65..2fd594b 100644 --- a/realize/watcher.go +++ b/realize/watcher.go @@ -157,11 +157,18 @@ func (p *Project) build() { func (p *Project) run(channel chan bool, wr *sync.WaitGroup) { if p.Run{ if p.Bin { + runner := make(chan bool,1) LogSuccess(p.Name + ": Running..") - go p.GoRun(channel, wr) - LogSuccess(p.Name + ": Runned") + go p.GoRun(channel, runner, wr) + for{ + select { + case <- runner: + LogSuccess(p.Name + ": Runned") + return + } + } }else{ - LogFail("Set 'app_run' to true") + LogFail("Set 'app_run' to true for launch run") } } return