Raxol.Terminal.Extension.Manager (Raxol v0.5.0)

View Source

Manages terminal extensions with advanced features:

  • Extension loading and unloading
  • Extension lifecycle management
  • Extension API and event system
  • Extension configuration and state management

Summary

Functions

Emits an event to all registered handlers.

Gets the current extension metrics.

Loads an extension into the manager.

Creates a new extension manager with the given options.

Unloads an extension from the manager.

Updates the configuration for an extension.

Types

command()

@type command() :: %{
  name: String.t(),
  handler: function(),
  description: String.t(),
  usage: String.t()
}

event()

@type event() :: %{name: String.t(), handler: function(), priority: integer()}

extension()

@type extension() :: %{
  name: String.t(),
  version: String.t(),
  description: String.t(),
  author: String.t(),
  events: [String.t()],
  commands: [String.t()],
  config: map(),
  state: map()
}

t()

@type t() :: %Raxol.Terminal.Extension.Manager{
  commands: %{required(String.t()) => command()},
  config: map(),
  events: %{required(String.t()) => [event()]},
  extensions: %{required(String.t()) => extension()},
  metrics: %{
    extension_loads: integer(),
    extension_unloads: integer(),
    event_handlers: integer(),
    command_executions: integer(),
    config_updates: integer()
  }
}

Functions

emit_event(manager, event_name, args \\ [])

@spec emit_event(t(), String.t(), [term()]) :: {:ok, [term()], t()} | {:error, term()}

Emits an event to all registered handlers.

execute_command(manager, command_name, args \\ [])

@spec execute_command(t(), String.t(), [term()]) ::
  {:ok, term(), t()} | {:error, term()}

Executes an extension command.

get_metrics(manager)

@spec get_metrics(t()) :: map()

Gets the current extension metrics.

load_extension(manager, extension)

@spec load_extension(t(), extension()) :: {:ok, t()} | {:error, term()}

Loads an extension into the manager.

new(opts \\ [])

@spec new(keyword()) :: t()

Creates a new extension manager with the given options.

unload_extension(manager, extension_name)

@spec unload_extension(t(), String.t()) :: {:ok, t()} | {:error, term()}

Unloads an extension from the manager.

update_extension_config(manager, extension_name, config)

@spec update_extension_config(t(), String.t(), map()) :: {:ok, t()} | {:error, term()}

Updates the configuration for an extension.