Logo ProcessKit API Reference

ServiceCollectionExtensions Type

`IServiceCollection.AddProcessKit()` / `AddProcessKitClient()` / `AddProcessKitGroup()` extensions.

Static members

Static member Description

ServiceCollectionExtensions.AddProcessKit(services, configuration)

Full Usage: ServiceCollectionExtensions.AddProcessKit(services, configuration)

Parameters:
Returns: IServiceCollection

Register the runner (see `AddProcessKit`) and bind the `ProcessKitOptions` defaults from a configuration section (e.g. `configuration.GetSection("ProcessKit")`). **Trimming / AOT:** this overload binds options by reflection (`Configure<TOptions>(IConfiguration)`), so it is not trim-/AOT-safe — use the `Action<ProcessKitOptions>` overload from a trimmed/AOT app.

services : IServiceCollection
configuration : IConfiguration
Returns: IServiceCollection

ServiceCollectionExtensions.AddProcessKit(services, configure)

Full Usage: ServiceCollectionExtensions.AddProcessKit(services, configure)

Parameters:
Returns: IServiceCollection

Register the runner (see `AddProcessKit`) and configure the `ProcessKitOptions` defaults (default timeout, working directory) applied to every DI-resolved run.

services : IServiceCollection
configure : Action<ProcessKitOptions>
Returns: IServiceCollection

ServiceCollectionExtensions.AddProcessKit(services)

Full Usage: ServiceCollectionExtensions.AddProcessKit(services)

Parameters:
Returns: IServiceCollection

Register `IProcessRunner` (a singleton `JobRunner`). When the container also has an `ILoggerFactory`, the runner is wrapped so every run it drives emits ProcessKit's structured lifecycle events under the `ProcessKit` category (argv/env never logged); configured `ProcessKitOptions` defaults are applied to each command. A pre-existing `IProcessRunner` registration is left untouched.

services : IServiceCollection
Returns: IServiceCollection

ServiceCollectionExtensions.AddProcessKitClient(services, name, program)

Full Usage: ServiceCollectionExtensions.AddProcessKitClient(services, name, program)

Parameters:
Returns: IServiceCollection

Register a keyed `CliClient` for `program` under `name`, with no extra defaults (see the `configure` overload).

services : IServiceCollection
name : string
program : string
Returns: IServiceCollection

ServiceCollectionExtensions.AddProcessKitClient(services, name, program, configure)

Full Usage: ServiceCollectionExtensions.AddProcessKitClient(services, name, program, configure)

Parameters:
Returns: IServiceCollection

Register a **keyed** `CliClient` for one external tool under `name`, so an app injects it by role (`[FromKeyedServices("git")] CliClient git`). The client runs through the container's registered `IProcessRunner` when present (so it is logger-aware and honours a shared group / test runner), otherwise a default `JobRunner`. `configure` applies shared defaults via the `CliClient` builder (`WithDefaults` — timeout, working directory, environment, encoding, ok-codes, …).

services : IServiceCollection
name : string
program : string
configure : Func<CliClient, CliClient>
Returns: IServiceCollection

ServiceCollectionExtensions.AddProcessKitGroup(services, configuration)

Full Usage: ServiceCollectionExtensions.AddProcessKitGroup(services, configuration)

Parameters:
Returns: IServiceCollection

A shared container-managed group (see `AddProcessKitGroup`) that also binds the `ProcessKitOptions` defaults from a configuration section. **Trimming / AOT:** this overload binds options by reflection (`Configure<TOptions>(IConfiguration)`), so it is not trim-/AOT-safe — use the `Action<ProcessKitOptions>` overload from a trimmed/AOT app.

services : IServiceCollection
configuration : IConfiguration
Returns: IServiceCollection

ServiceCollectionExtensions.AddProcessKitGroup(services, configure)

Full Usage: ServiceCollectionExtensions.AddProcessKitGroup(services, configure)

Parameters:
Returns: IServiceCollection

A shared container-managed group (see `AddProcessKitGroup`) that also configures the `ProcessKitOptions` defaults (timeout / working directory) applied to every run through it.

services : IServiceCollection
configure : Action<ProcessKitOptions>
Returns: IServiceCollection

ServiceCollectionExtensions.AddProcessKitGroup(services)

Full Usage: ServiceCollectionExtensions.AddProcessKitGroup(services)

Parameters:
Returns: IServiceCollection

Register `IProcessRunner` backed by a **shared, container-managed `ProcessGroup`** — every run goes into one kill-on-dispose container whose lifetime is the provider's, so disposing the provider reaps the whole tree. The `ProcessGroup` is also registered directly (inject it for tree control). Logger-aware and options-applying like `AddProcessKit`. Call this **instead of** `AddProcessKit` when you want a shared group; both use `TryAdd`, so the first wins.

services : IServiceCollection
Returns: IServiceCollection

Type something to start searching.