Skip to content

Interface: PluginContext<G>

Gunshi plugin context interface.

Since

v0.27.0

Signature

ts
export interface PluginContext<G extends GunshiParamsConstraint = DefaultGunshiParams>

Type Parameters

NameDescription
G extends GunshiParamsConstraint = DefaultGunshiParamsA type extending GunshiParams to specify the shape of command parameters.

Properties

NameTypeDescription
globalOptions (readonly)Map<string, ArgSchema>Get the global options
subCommands (readonly)ReadonlyMap<string, Command<G> | LazyCommand<G>>Get the registered sub commands

Methods

addCommand()

ts
addCommand(name: string, command: Command<G> | LazyCommand<G>): void;

Add a sub command.

Parameters

NameTypeDescription
namestringCommand name
commandCommand<G> | LazyCommand<G>Command definition

Returns

void


addGlobalOption()

ts
addGlobalOption(name: string, schema: ArgSchema): void;

Add a global option.

Parameters

NameTypeDescription
namestringAn option name
schemaArgSchemaAn ArgSchema for the option

Returns

void


decorateCommand()

ts
decorateCommand<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (
      baseRunner: (
        ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>
      ) => Awaitable<void | string>
    ) => (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Awaitable<void | string>): void;

Decorate the command execution.

Decorators are applied in reverse order (last registered is executed first).

Type Parameters

NameDescription
L extends Record<string, unknown> = DefaultGunshiParams['extensions']An extensions type to specify the shape of CommandContext's extensions.

Parameters

NameTypeDescription
decorator(baseRunner: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Awaitable<void | string>) => (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Awaitable<void | string>A decorator function that wraps the command runner

Returns

void


decorateHeaderRenderer()

ts
decorateHeaderRenderer<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (
      baseRenderer: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>,
      ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>
    ) => Promise<string>): void;

Decorate the header renderer.

Type Parameters

NameDescription
L extends Record<string, unknown> = DefaultGunshiParams['extensions']An extensions type to specify the shape of CommandContext's extensions.

Parameters

NameTypeDescription
decorator(baseRenderer: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>, ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>A decorator function that wraps the base header renderer.

Returns

void


decorateUsageRenderer()

ts
decorateUsageRenderer<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (
      baseRenderer: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>,
      ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>
    ) => Promise<string>): void;

Decorate the usage renderer.

Type Parameters

NameDescription
L extends Record<string, unknown> = DefaultGunshiParams['extensions']An extensions type to specify the shape of CommandContext's extensions.

Parameters

NameTypeDescription
decorator(baseRenderer: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>, ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>A decorator function that wraps the base usage renderer.

Returns

void


decorateValidationErrorsRenderer()

ts
decorateValidationErrorsRenderer<
    L extends Record<string, unknown> = DefaultGunshiParams['extensions']
  >(decorator: (
      baseRenderer: (
        ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>,
        error: AggregateError
      ) => Promise<string>,
      ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>,
      error: AggregateError
    ) => Promise<string>): void;

Decorate the validation errors renderer.

Type Parameters

NameDescription
L extends Record<string, unknown> = DefaultGunshiParams['extensions']An extensions type to specify the shape of CommandContext's extensions.

Parameters

NameTypeDescription
decorator(baseRenderer: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>, error: AggregateError) => Promise<string>, ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>, error: AggregateError) => Promise<string>A decorator function that wraps the base validation errors renderer.

Returns

void


hasCommand()

ts
hasCommand(name: string): boolean;

Check if a command exists.

Parameters

NameTypeDescription
namestringCommand name

Returns

boolean — True if the command exists, false otherwise

Released under the MIT License.