Parses and validates plugin options using OptionParser-like semantics.
This module supports two primary flows:
parse/4: non-raising parse that returns{parsed, rest, invalid}validate!/3: raising validation helper used by runtime planner code
Parsing mode is selected in this order:
:strictpassed toparse/4:switchespassed toparse/4- plugin
opts_schema/0when available - permissive
:switchesmode when no schema is declared
Return Shape
parse/4 always returns a tuple in the shape:
{parsed_opts, [], invalid_entries}Where:
parsed_optsis a keyword list of accepted options[]is the rest slot kept for OptionParser-style compatibilityinvalid_entriesis a list of maps with a:kindkey, for example:%{kind: :unknown_option, ...}%{kind: :invalid_type, ...}%{kind: :missing_required, ...}%{kind: :invalid_opts_type, ...}
Duplicate Options
By default, repeated keys are overwritten (last value wins).
Use :keep in a rule to preserve repeated entries.
Errors
validate!/3 raises Catalyst.Errors.PluginError with reason
:invalid_plugin_opts when parsing or schema validation fails.
Summary
Functions
Parses plugin options without raising.
Validates plugin options and returns parsed options or raises.
Types
@type invalid_entry() :: %{:kind => invalid_kind(), optional(atom()) => any()}
@type invalid_kind() ::
:unknown_option | :invalid_type | :missing_required | :invalid_opts_type
@type parse_result() :: {parsed(), [], [invalid_entry()]}
@type parsed() :: keyword()
Functions
@spec parse(module(), keyword(), map(), parser_options()) :: parse_result()
Parses plugin options without raising.
Accepts raw plugin options, runs plugin init/2 normalization, applies aliases,
and validates against strict or switches rules.
Parameters
plugin_mod: plugin module implementinginit/2opts: input keyword optionsconfig: project/runtime config passed through toinit/2parser_opts: parser overrides such asstrict:,switches:,aliases:
Returns
{parsed_opts, [], invalid_entries}This function does not raise for unknown/type/required-option parse failures;
they are returned in invalid_entries.
It may still raise Catalyst.Errors.PluginError if init/2 returns an invalid
shape or if schema declaration itself is malformed.
Validates plugin options and returns parsed options or raises.
This is a strict helper around parse/4 that converts the first invalid parse
entry into a Catalyst.Errors.PluginError.
Returns
- parsed keyword options when validation succeeds
Raises
Catalyst.Errors.PluginErrorwhen options are invalid, missing required keys, contain unknown keys in strict mode, have invalid types, or are not a keyword list