Raxol.Core.Runtime.Plugins.PluginMetadataProvider.Behaviour behaviour (Raxol v0.4.0)

View Source

Defines the behaviour for plugin metadata providers.

This behaviour is responsible for:

  • Providing plugin metadata (ID, version, dependencies)
  • Validating plugin metadata
  • Managing plugin metadata lifecycle

Summary

Callbacks

Gets the metadata for a plugin.

Gets the plugin behaviours from metadata.

Gets the plugin config schema from metadata.

Gets the plugin dependencies from metadata. Returns a list of dependencies, each being either

Gets the plugin ID from metadata.

Gets the plugin optional dependencies from metadata. Returns a list of dependencies, each being either

Gets the plugin version from metadata.

Validates plugin metadata.

Types

dependency()

@type dependency() :: {String.t(), version_constraint()} | String.t()

metadata()

@type metadata() :: %{
  id: String.t(),
  version: String.t(),
  name: String.t(),
  description: String.t(),
  author: String.t(),
  dependencies: [dependency()],
  optional_dependencies: [dependency()],
  config_schema: map() | nil,
  behaviours: [module()]
}

version_constraint()

@type version_constraint() :: String.t()

Callbacks

get_metadata(module)

@callback get_metadata(module :: module()) :: {:ok, metadata()} | {:error, any()}

Gets the metadata for a plugin.

get_plugin_behaviours(metadata)

@callback get_plugin_behaviours(metadata :: metadata()) ::
  {:ok, [module()]} | {:error, any()}

Gets the plugin behaviours from metadata.

get_plugin_config_schema(metadata)

@callback get_plugin_config_schema(metadata :: metadata()) ::
  {:ok, map() | nil} | {:error, any()}

Gets the plugin config schema from metadata.

get_plugin_dependencies(metadata)

@callback get_plugin_dependencies(metadata :: metadata()) ::
  {:ok, [dependency()]} | {:error, any()}

Gets the plugin dependencies from metadata. Returns a list of dependencies, each being either:

  • A tuple {plugin_id, version_constraint} for versioned dependencies
  • A simple plugin_id string for unversioned dependencies

get_plugin_id(metadata)

@callback get_plugin_id(metadata :: metadata()) :: {:ok, String.t()} | {:error, any()}

Gets the plugin ID from metadata.

get_plugin_optional_dependencies(metadata)

@callback get_plugin_optional_dependencies(metadata :: metadata()) ::
  {:ok, [dependency()]} | {:error, any()}

Gets the plugin optional dependencies from metadata. Returns a list of dependencies, each being either:

  • A tuple {plugin_id, version_constraint} for versioned dependencies
  • A simple plugin_id string for unversioned dependencies

get_plugin_version(metadata)

@callback get_plugin_version(metadata :: metadata()) ::
  {:ok, String.t()} | {:error, any()}

Gets the plugin version from metadata.

validate_metadata(metadata)

@callback validate_metadata(metadata :: metadata()) :: :ok | {:error, any()}

Validates plugin metadata.