Facade for plugin management operations.
This module provides a unified API that delegates to specialized modules:
PluginRegistry- Fast ETS-backed lookups (no process serialization)PluginLifecycle- GenServer for coordination (load, enable, state)
Architecture
Following Rich Hickey's principle of separating data from coordination:
PluginManager (Facade)
|
+-- PluginRegistry (Pure + ETS)
| - Plugin registration
| - Metadata storage
| - Command lookups
| - Fast concurrent reads
|
+-- PluginLifecycle (GenServer)
- Load/unload coordination
- Enable/disable state
- Runtime plugin state
- File watching/hot reloadMigration Note
This module maintains backward compatibility with the old API. New code should use:
PluginRegistryfor lookups (faster, no process call)PluginLifecyclefor lifecycle operations
Usage
# Load a plugin
PluginManager.load_plugin_by_module(MyPlugin, %{config: "value"})
# List plugins (fast ETS lookup)
PluginManager.list_plugins()
# Enable/disable
PluginManager.enable_plugin(:my_plugin)
PluginManager.disable_plugin(:my_plugin)
Summary
Functions
Calls a hook on a plugin.
Calls a hook on a plugin (legacy signature with pid).
Disables a plugin.
Enables a plugin.
Gets list of loaded plugin IDs.
Gets list of loaded plugin IDs (legacy signature with pid).
Gets a plugin by ID.
Gets plugin configuration.
Gets plugin configuration (legacy signature with pid).
Gets the runtime state of a plugin.
Initializes the plugin manager.
Initializes a specific plugin.
Initializes a specific plugin (legacy signature with pid).
Initializes with configuration.
Lists all registered plugins.
Loads a plugin by ID.
Loads a plugin with config (legacy signature).
Loads a plugin by module with optional configuration.
Checks if a plugin is loaded.
Checks if a plugin is loaded (legacy signature with pid).
Reloads a plugin.
Sets the runtime state of a plugin.
Starts the plugin management system.
Unloads a plugin.
Unloads a plugin (legacy signature with pid).
Updates a plugin entry using a function.
Updates plugin configuration.
Updates plugin configuration (legacy signature with pid).
Validates plugin configuration.
Types
Functions
Calls a hook on a plugin.
Calls a hook on a plugin (legacy signature with pid).
Disables a plugin.
Enables a plugin.
Gets list of loaded plugin IDs.
Gets list of loaded plugin IDs (legacy signature with pid).
Gets a plugin by ID.
Fast ETS lookup.
Gets plugin configuration.
Gets plugin configuration (legacy signature with pid).
Gets the runtime state of a plugin.
Initializes the plugin manager.
Initializes a specific plugin.
Initializes a specific plugin (legacy signature with pid).
Initializes with configuration.
Lists all registered plugins.
This is a fast ETS lookup - no GenServer call required.
Loads a plugin by ID.
Loads a plugin with config (legacy signature).
Loads a plugin by module with optional configuration.
Checks if a plugin is loaded.
Checks if a plugin is loaded (legacy signature with pid).
Reloads a plugin.
Sets the runtime state of a plugin.
Starts the plugin management system.
Initializes both the registry and lifecycle manager.
Unloads a plugin.
Unloads a plugin (legacy signature with pid).
Updates a plugin entry using a function.
Updates plugin configuration.
Updates plugin configuration (legacy signature with pid).
Validates plugin configuration.