Logo ProcessKit API Reference

Runner Module

The run verbs, expressed over any `IProcessRunner`. One verb, one meaning: - `run` — require a zero exit; return stdout, trailing whitespace trimmed. - `outputString` / `outputBytes` — the full `ProcessResult`; a non-zero exit is data. - `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.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 exit and return stdout with trailing whitespace trimmed.

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.

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.