process

package
v0.1.0-dev.20261001193326 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 1, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package process is the single bridge between os/exec and the runtime environment's status (narration) and result (typed payload) channels.

Every provider that shells out goes through Runner so line-splitting, dry-run, cancellation, and error wrapping live in exactly one place.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Runner

type Runner struct {
	// contains filtered or unexported fields
}

Runner executes os/exec commands with stdout and stderr routed through the configured status and result channels.

func NewRunner

func NewRunner(ctx context.Context, dryRun bool, pipeline *result.Pipeline, narrator *status.Narrator) *Runner

NewRunner constructs a Runner bound to the given runtime values.

Parameters:

  • ctx: cancellation signal for the subprocess; when Done, the subprocess is killed.
  • dryRun: when true, narrate the command but skip execution.
  • pipeline: typed-payload pipeline consumed by Emit.
  • narrator: narrator for stdout and stderr line streams and pre-execution narration.

Returns:

  • *Runner: the initialized runner.

func (*Runner) Capture

func (r *Runner) Capture(cmd *exec.Cmd) ([]byte, error)

Capture executes cmd, returning stdout bytes verbatim and streaming stderr through ctx.Status.Warn.

In dry-run, narrates the command and returns nil bytes with a nil error.

Parameters:

  • cmd: the prepared exec.Cmd; its Stdout, Stderr, and Cancel fields are overwritten by the runner.

Returns:

  • []byte: the captured stdout (nil in dry-run).
  • error: a wrapped exit-error carrying the command path and exit code on non-zero exit; full stderr remains available to the caller via the streamed status messages.

func (*Runner) Emit

func (r *Runner) Emit(cmd *exec.Cmd, parse func([]byte) (any, error)) error

Emit captures stdout, applies parse to produce a typed value, then forwards the value to ctx.Result.Emit.

Stderr streams through ctx.Status.Warn. In dry-run, narrates the command and returns nil without invoking parse.

Parameters:

  • cmd: the prepared exec.Cmd
  • parse: converts captured stdout bytes into the typed value forwarded to the result sink

Returns:

  • error: a wrapped exit-error, parse error, or sink error; nil on success

func (*Runner) Run

func (r *Runner) Run(cmd *exec.Cmd) error

Run executes cmd, streaming stdout through ctx.Status.Note and stderr through ctx.Status.Warn line-by-line.

In dry-run, narrates the command and returns nil without launching it.

Parameters:

  • cmd: the prepared exec.Cmd; its Stdout, Stderr, and Cancel fields are overwritten by the runner.

Returns:

  • error: a wrapped exit-error carrying the command path and exit code on non-zero exit; full stderr remains available to the caller via the streamed status messages.

func (*Runner) RunNarrating

func (r *Runner) RunNarrating(cmd *exec.Cmd) error

RunNarrating executes cmd, streaming both its stdout and its stderr through ctx.Status.Note line-by-line.

For a child that narrates on stderr, as every program on the shared root does (10-command-line-interface.md §5): relayed by Runner.Run, its story reads as a run of warnings, and relayed here it reads as what it is. Whether the child failed is its exit status's to say, not its stderr's. In dry-run, narrates the command and returns nil without launching it.

Parameters:

  • cmd: the prepared exec.Cmd; its Stdout, Stderr, and Cancel fields are overwritten by the runner.

Returns:

  • error: a wrapped exit-error carrying the command path and exit code on non-zero exit.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL