(ctx devspacecontext.Context, args []string, parent *tomb.Tomb, environ expand.Environ)
| 94 | } |
| 95 | |
| 96 | func (j *Job) execute(ctx devspacecontext.Context, args []string, parent *tomb.Tomb, environ expand.Environ) error { |
| 97 | ctx = ctx.WithLogger(ctx.Log()) |
| 98 | stdoutReader, stdoutWriter := io.Pipe() |
| 99 | defer stdoutWriter.Close() |
| 100 | |
| 101 | parent.Go(func() error { |
| 102 | s := scanner.NewScanner(stdoutReader) |
| 103 | for s.Scan() { |
| 104 | ctx.Log().Info(s.Text()) |
| 105 | } |
| 106 | return nil |
| 107 | }) |
| 108 | |
| 109 | stderrReader, stderrWriter := io.Pipe() |
| 110 | defer stderrWriter.Close() |
| 111 | |
| 112 | parent.Go(func() error { |
| 113 | s := scanner.NewScanner(stderrReader) |
| 114 | for s.Scan() { |
| 115 | ctx.Log().Warn(s.Text()) |
| 116 | } |
| 117 | return nil |
| 118 | }) |
| 119 | |
| 120 | handler := pipelinehandler.NewPipelineExecHandler(ctx, stdoutWriter, stderrWriter, j.Pipeline) |
| 121 | _, err := engine.ExecutePipelineShellCommand(ctx.Context(), j.Config.Run, args, ctx.WorkingDir(), j.Config.ContinueOnError, stdoutWriter, stderrWriter, os.Stdin, environ, handler) |
| 122 | return err |
| 123 | } |
no test coverage detected