Skip to content

CLIRunOptions ​

Options for .run().

Derives from CLIExecuteOptions, adding the CLI-level runtime adapter.

Signatures ​

ts
interface CLIRunOptions extends CLIExecuteOptions {}

Members ​

Properties ​

adapter ​

Runtime adapter providing platform-specific I/O, argv, env, etc.

Replaces the default Node adapter.

ts
adapter?: RuntimeAdapter;

answers ​

Pre-configured prompt answers for testing convenience.

When provided, a test prompter is created from these answers via createTestPrompter(answers). Each entry is consumed in order — use PROMPT_CANCEL to simulate cancellation.

Ignored when an explicit prompter is provided.

ts
answers?: readonly unknown[];

config ​

Configuration object for flag and arg resolution.

Inputs with .config('path') configured resolve from this record when CLI, stdin, and env produce nothing (CLI → stdin → env → config → prompt → default). Config is plain JSON, so file loading is the caller's responsibility.

ts
config?: Readonly<Record<string, unknown>>;

env ​

Environment variables for flag and arg resolution.

Inputs with .env('VAR') configured resolve from this record when CLI and stdin produce nothing (CLI → stdin → env → config → prompt → default).

ts
env?: Readonly<Record<string, string | undefined>>;

envPrefix ​

Environment namespace prepended to every relative .env() binding, the same way CLIBuilder.envPrefix() applies one CLI-wide.

.execute() and .run() default it to the CLI's own prefix, and a value here wins. Pass it to runCommand() to test a command under the namespace its CLI declares; without it a command reads its env names as written.

ts
envPrefix?: string;

flags ​

Flag-parsing behavior settings.

caseParity accepts the kebab↔camel counterpart spelling of each flag name/alias (--doThis for do-this, and vice versa). The CLI layer threads cli(name, { flags }) settings here automatically.

ts
flags?: ParseOptions;

help ​

Help formatting options (width, binName). Used when --help is detected.

ts
help?: HelpOptions;

isTTY ​

Whether stdout is connected to a TTY.

Handlers can check out.isTTY to decide whether to emit decorative output (spinners, progress bars, ANSI codes). Defaults to false (safe default for tests — non-TTY until proven otherwise).

ts
isTTY?: boolean;

jsonMode ​

Enable JSON output mode.

When true, log and info messages are redirected to stderr so that stdout is reserved exclusively for structured json() output. Framework-rendered errors are emitted as structured JSON to stdout.

ts
jsonMode?: boolean;

mkdir ​

Recursive directory creation for flag.path() and arg.path() create checks.

CLIBuilder.run() supplies the runtime adapter's implementation automatically. When absent, missing paths are not created: the existence rules decide instead, and the input is listed in RunResult.skippedPathChecks with missing: 'mkdir'.

ts
mkdir?: { (path: string): Promise<void>; };

pathChecks ​

What happens to a declared filesystem check that cannot run because stat (or mkdir for create) was not supplied.

  • 'lenient' — skip the check and record it in RunResult.skippedPathChecks; the command still runs, which keeps parser and action tests off the host filesystem.
  • 'strict' — fail with a CLIError of code 'PATH_CHECK_SKIPPED' (exit code 1) naming every input whose check did not run, so a passing test proves each declared mustExist, type, and create check was exercised.

Only inputs that resolved a path value count. CLIBuilder.run() always supplies the adapter's filesystem, so this matters to .execute() and runCommand().

ts
pathChecks?: "strict" | "lenient";

prompter ​

Prompt engine for interactive flag and arg resolution.

When provided, inputs with .prompt() configured that have no value after CLI, stdin, env, and config resolution are prompted interactively.

When absent (and answers is also absent), prompting is skipped and resolution falls through to default/required.

Takes precedence over answers when both are provided.

ts
prompter?: PromptEngine;

stat ​

Filesystem probe for flag.path() and arg.path() checks: reports what exists at a path ('file', 'directory', or null for nothing).

CLIBuilder.run() supplies the runtime adapter's probe automatically. When absent (process-free .execute() / runCommand() without an override), path checks are skipped and each skipped input is listed in RunResult.skippedPathChecks; set RunOptions.pathChecks to 'strict' to fail instead.

ts
stat?: { (path: string): Promise<"file" | "directory" | null>; };

stdinData ​

Full stdin contents for flags and args configured with .stdin().

Lets tests inject piped input without a runtime adapter.

ts
stdinData?: string | null;

verbosity ​

Verbosity level for the output channel.

ts
verbosity?: "quiet" | "normal";

See Also ​

Released under the MIT License.