Raxol.Core.Runtime.Plugins.DependencyManager.Behaviour behaviour (Raxol v0.3.0)

View Source

Defines the behaviour for plugin dependency management.

This behaviour is responsible for:

  • Checking plugin dependencies
  • Resolving dependency conflicts
  • Managing dependency versions
  • Handling circular dependencies

Summary

Callbacks

Checks for circular dependencies in the plugin graph.

Checks if a plugin's dependencies are satisfied.

Resolves dependencies between plugins.

Validates a plugin's dependency specifications.

Callbacks

check_circular_dependencies(plugin_id, dependencies, loaded_plugins)

@callback check_circular_dependencies(
  plugin_id :: String.t(),
  dependencies :: [{atom(), String.t()}],
  loaded_plugins :: map()
) :: :ok | {:error, any()}

Checks for circular dependencies in the plugin graph.

check_dependencies(plugin_id, plugin_metadata, loaded_plugins)

@callback check_dependencies(
  plugin_id :: String.t(),
  plugin_metadata :: map(),
  loaded_plugins :: map()
) :: :ok | {:error, any()}

Checks if a plugin's dependencies are satisfied.

resolve_dependencies(plugin_metadata, loaded_plugins)

@callback resolve_dependencies(
  plugin_metadata :: map(),
  loaded_plugins :: map()
) :: {:ok, [String.t()]} | {:error, any()}

Resolves dependencies between plugins.

validate_dependencies(dependencies)

@callback validate_dependencies(dependencies :: [{atom(), String.t()}]) ::
  :ok | {:error, any()}

Validates a plugin's dependency specifications.