(ctx context.Context, cmds []*exec.Cmd)
| 260 | } |
| 261 | |
| 262 | func waitPipeCommands(ctx context.Context, cmds []*exec.Cmd) error { |
| 263 | done := make(chan error, 1) |
| 264 | go func() { |
| 265 | var runErr error |
| 266 | for _, item := range cmds { |
| 267 | if err := item.Wait(); err != nil && runErr == nil { |
| 268 | runErr = err |
| 269 | } |
| 270 | } |
| 271 | done <- runErr |
| 272 | }() |
| 273 | select { |
| 274 | case runErr := <-done: |
| 275 | return runErr |
| 276 | case <-ctx.Done(): |
| 277 | killProcessGroups(cmds) |
| 278 | return <-done |
| 279 | } |
| 280 | } |
| 281 | |
| 282 | func (c *CommandHelper) run(name string, arg ...string) (string, error) { |
| 283 | var cmd *exec.Cmd |
no test coverage detected