Logo ProcessKit API Reference

Runner Module

 The run verbs, expressed over any `IProcessRunner`. One verb, one meaning:

 - `run` — require a zero/accepted exit; return stdout, trailing whitespace trimmed. Output a
   bounded `OutputBuffer` policy truncated is refused (`OutputTooLarge`), never passed off as whole.
 - `outputString` / `outputBytes` — the full `ProcessResult`; a non-zero exit is data, and so is a
   truncated capture (read `ProcessResult.Truncated`).
 - `exitCode` — the exit code; a signal kill or timeout errors instead of inventing one.
 - `probe` — read the exit code as a yes/no: 0 -> true, 1 -> false, anything else errors.

Functions and values

Function or value Description

Runner.exitCode runner cancellationToken command

Full Usage: Runner.exitCode runner cancellationToken command

Parameters:
Returns: Task<Result<int, ProcessError>>

The exit code. A signal kill or timeout errors instead of inventing a sentinel code.

runner : IProcessRunner
cancellationToken : CancellationToken
command : Command
Returns: Task<Result<int, ProcessError>>

Runner.firstLine runner cancellationToken predicate command

Full Usage: Runner.firstLine runner cancellationToken predicate command

Parameters:
Returns: Task<Result<string option, ProcessError>>

The first stdout line satisfying `predicate`, or `None` if stdout closes without a match.

runner : IProcessRunner
cancellationToken : CancellationToken
predicate : string -> bool
command : Command
Returns: Task<Result<string option, ProcessError>>

Runner.outputBytes runner cancellationToken command

Full Usage: Runner.outputBytes runner cancellationToken command

Parameters:
Returns: Task<Result<ProcessResult<byte[]>, ProcessError>>

Run to completion, capturing stdout as raw bytes.

runner : IProcessRunner
cancellationToken : CancellationToken
command : Command
Returns: Task<Result<ProcessResult<byte[]>, ProcessError>>

Runner.outputJson runner cancellationToken options command

Full Usage: Runner.outputJson runner cancellationToken options command

Parameters:
Returns: Task<Result<'T, ProcessError>>
Type parameters: 'T

Require a zero/accepted exit and deserialize the trimmed stdout as JSON into a `'T` via `System.Text.Json` (`options = None` uses the BCL defaults); invalid JSON becomes `ProcessError.Parse`, exactly like `parse`/`tryParse` — never a raised exception. Applied once, outside any retry (see `parse`'s doc for why). **Trimming / AOT:** deserializes via reflection-based `System.Text.Json` (`JsonSerializer.Deserialize(string, Type, JsonSerializerOptions)`), so it is not trim-/AOT-safe — pass `options` with a source-generated `JsonSerializerContext`/`JsonTypeInfo<'T>` resolver, or avoid this verb, in a trimmed/NativeAOT app.

runner : IProcessRunner
cancellationToken : CancellationToken
options : JsonSerializerOptions option
command : Command
Returns: Task<Result<'T, ProcessError>>

Runner.outputJsonTyped runner cancellationToken typeInfo command

Full Usage: Runner.outputJsonTyped runner cancellationToken typeInfo command

Parameters:
Returns: Task<Result<'T, ProcessError>>
Type parameters: 'T

Require a zero/accepted exit and deserialize the trimmed stdout with caller-provided source-generated `JsonTypeInfo<'T>` metadata. Invalid JSON becomes `ProcessError.Parse`, just like `outputJson`, and this overload is safe for trimmed and NativeAOT applications.

runner : IProcessRunner
cancellationToken : CancellationToken
typeInfo : JsonTypeInfo<'T>
command : Command
Returns: Task<Result<'T, ProcessError>>

Runner.outputString runner cancellationToken command

Full Usage: Runner.outputString runner cancellationToken command

Parameters:
Returns: Task<Result<ProcessResult<string>, ProcessError>>

Run to completion, capturing stdout as decoded text. A non-zero exit is data, not an error.

runner : IProcessRunner
cancellationToken : CancellationToken
command : Command
Returns: Task<Result<ProcessResult<string>, ProcessError>>

Runner.parse runner cancellationToken parser command

Full Usage: Runner.parse runner cancellationToken parser command

Parameters:
Returns: Task<Result<'T, ProcessError>>
Type parameters: 'T

Require a zero exit and parse the trimmed stdout into a `'T`; a thrown parser error becomes `ProcessError.Parse`.

runner : IProcessRunner
cancellationToken : CancellationToken
parser : string -> 'T
command : Command
Returns: Task<Result<'T, ProcessError>>

Runner.probe runner cancellationToken command

Full Usage: Runner.probe runner cancellationToken command

Parameters:
Returns: Task<Result<bool, ProcessError>>

Read the exit code as a yes/no answer: 0 -> true, 1 -> false, anything else errors.

runner : IProcessRunner
cancellationToken : CancellationToken
command : Command
Returns: Task<Result<bool, ProcessError>>

Runner.run runner cancellationToken command

Full Usage: Runner.run runner cancellationToken command

Parameters:
Returns: Task<Result<string, ProcessError>>

Require a zero/accepted exit and return stdout with trailing whitespace trimmed. Output the command's `OutputBuffer` policy truncated (`DropOldest`/`DropNewest` over a cap) is refused with `ProcessError.OutputTooLarge`, and output the bounded post-exit drain cut short (a descendant held the child's stdout open past its exit) with `ProcessError.OutputIncomplete`, rather than returned as if complete — use `outputString` for the lenient path, which hands back the bounded payload with `ProcessResult.Truncated` set.

runner : IProcessRunner
cancellationToken : CancellationToken
command : Command
Returns: Task<Result<string, ProcessError>>

Runner.runUnit runner cancellationToken command

Full Usage: Runner.runUnit runner cancellationToken command

Parameters:
Returns: Task<Result<unit, ProcessError>>

Like `run`, but discard the captured output. A side-effect run promises nothing about stdout, so an accepted exit stays `Ok` even when the buffer policy truncated the output being discarded.

runner : IProcessRunner
cancellationToken : CancellationToken
command : Command
Returns: Task<Result<unit, ProcessError>>

Runner.start runner cancellationToken command

Full Usage: Runner.start runner cancellationToken command

Parameters:
Returns: Task<Result<RunningProcess, ProcessError>>

Start the command and return a live `RunningProcess` for streaming and interactive I/O.

runner : IProcessRunner
cancellationToken : CancellationToken
command : Command
Returns: Task<Result<RunningProcess, ProcessError>>

Runner.tryParse runner cancellationToken parser command

Full Usage: Runner.tryParse runner cancellationToken parser command

Parameters:
Returns: Task<Result<'T, ProcessError>>
Type parameters: 'T

Like `parse`, but the parser returns its own `Result` (its error message — or a thrown exception's message — becomes `ProcessError.Parse`).

runner : IProcessRunner
cancellationToken : CancellationToken
parser : string -> Result<'T, string>
command : Command
Returns: Task<Result<'T, ProcessError>>

Type something to start searching.