run parses code and executes the interpreter's Runner
(ctx context.Context, reader io.Reader, name string)
| 272 | |
| 273 | // run parses code and executes the interpreter's Runner |
| 274 | func (h *shellCallHandler) run(ctx context.Context, reader io.Reader, name string) error { |
| 275 | file, err := parseShell(reader, name) |
| 276 | if err != nil { |
| 277 | return err |
| 278 | } |
| 279 | |
| 280 | stdio := telemetry.SpanStdio(ctx, InstrumentationLibrary) |
| 281 | h.stdoutWriter = newTerminalWriter(stdio.Stdout.Write) |
| 282 | h.stderrWriter = newTerminalWriter(stdio.Stderr.Write) |
| 283 | interp.StdIO(nil, h.stdoutWriter, h.stderrWriter)(h.runner) |
| 284 | h.stdoutWriter.SetProcessFunc(h.stateResolver(ctx)) |
| 285 | |
| 286 | return h.runner.Run(ctx, file) |
| 287 | } |
| 288 | |
| 289 | func parseShell(reader io.Reader, name string, opts ...syntax.ParserOption) (*syntax.File, error) { |
| 290 | opts = append([]syntax.ParserOption{syntax.Variant(syntax.LangPOSIX)}, opts...) |
no test coverage detected