Behaviour and registry helpers for optional command providers.
A provider is configured with:
config :ferricstore, :command_extensions, [MyApp.Commands]Providers declare command metadata with commands/0 and execute commands
with handle/3. The core dispatcher uses this metadata for routing and key
ACL extraction, while leaving command semantics in the provider module.
Summary
Functions
Builds the dispatcher AST for a configured command.
Returns true when a configured provider owns the command.
Returns the key access type for a configured command.
Returns configured command names in uppercase form.
Returns normalized command metadata from all configured providers.
Dispatches a configured command to its provider module.
Extracts key arguments for a configured command.
Looks up configured command metadata by command name.
Looks up configured command metadata by an already-uppercase command name.
Returns configured provider modules.
Returns the access type for a non-shadowing configured command.
Returns uppercase configured command names excluding built-in shadows.
Returns configured command metadata excluding names already owned by built-in commands.
Types
@type access() :: :read | :write | :rw
Callbacks
Functions
Builds the dispatcher AST for a configured command.
Returns true when a configured provider owns the command.
Returns the key access type for a configured command.
Returns configured command names in uppercase form.
@spec commands() :: [map()]
Returns normalized command metadata from all configured providers.
Dispatches a configured command to its provider module.
Extracts key arguments for a configured command.
Looks up configured command metadata by command name.
Looks up configured command metadata by an already-uppercase command name.
@spec modules() :: [module()]
Returns configured provider modules.
Returns the access type for a non-shadowing configured command.
Returns uppercase configured command names excluding built-in shadows.
@spec non_shadowing_commands() :: [map()]
Returns configured command metadata excluding names already owned by built-in commands.