fix goroutine call for commands with no handlers
This commit is contained in:
parent
2a59a80b11
commit
2b190eccb7
1 changed files with 31 additions and 27 deletions
58
linux/run.go
58
linux/run.go
|
@ -119,40 +119,44 @@ func (cmd *LinuxCommand) Run() error {
|
|||
}
|
||||
}
|
||||
|
||||
cmd.wg.Add(3)
|
||||
cmd.wg.Add(1)
|
||||
|
||||
go func() {
|
||||
defer cmd.wg.Done()
|
||||
scanner := bufio.NewScanner(cmd.stderr)
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
if h, ok := cmd.handlers[EventOutput]; ok {
|
||||
if err := h.(func(data EventOutputData) error)(EventOutputData{
|
||||
Output: line,
|
||||
CmdOptions: cmd.Options,
|
||||
}); err != nil {
|
||||
return
|
||||
if len(cmd.handlers) != 0 {
|
||||
cmd.wg.Add(2)
|
||||
|
||||
go func() {
|
||||
defer cmd.wg.Done()
|
||||
scanner := bufio.NewScanner(cmd.stderr)
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
if h, ok := cmd.handlers[EventOutput]; ok {
|
||||
if err := h.(func(data EventOutputData) error)(EventOutputData{
|
||||
Output: line,
|
||||
CmdOptions: cmd.Options,
|
||||
}); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer cmd.wg.Done()
|
||||
go func() {
|
||||
defer cmd.wg.Done()
|
||||
|
||||
scanner := bufio.NewScanner(cmd.stdout)
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
if h, ok := cmd.handlers[EventOutput]; ok {
|
||||
if err := h.(func(data EventOutputData) error)(EventOutputData{
|
||||
Output: line,
|
||||
CmdOptions: cmd.Options,
|
||||
}); err != nil {
|
||||
return
|
||||
scanner := bufio.NewScanner(cmd.stdout)
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
if h, ok := cmd.handlers[EventOutput]; ok {
|
||||
if err := h.(func(data EventOutputData) error)(EventOutputData{
|
||||
Output: line,
|
||||
CmdOptions: cmd.Options,
|
||||
}); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
}()
|
||||
}
|
||||
|
||||
go func() {
|
||||
defer cmd.wg.Done()
|
||||
|
|
Loading…
Reference in a new issue