enhancement: add a doc section about how to develop rules' plugins
Add a section into the doc about how to develop rules' plugins.
This commit is contained in:
@@ -16,3 +16,47 @@ Basic example of running the linter from Python:
|
|||||||
|
|
||||||
.. automodule:: yamllint.linter
|
.. automodule:: yamllint.linter
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
Develop rule plugins
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
yamllint provides a plugin mechanism using setuptools (pkg_resources) to allow
|
||||||
|
adding custom rules. So, you can extend yamllint and add rules with your own
|
||||||
|
custom yamllint rule plugins if you developed them.
|
||||||
|
|
||||||
|
Yamllint rule plugins must satisfy the followings.
|
||||||
|
|
||||||
|
#. It must be a Python package installable using pip and distributed under
|
||||||
|
GPLv3+ same as yamllint.
|
||||||
|
#. It must contains the entry point configuration in ``setup.cfg`` or something
|
||||||
|
similar packaging configuration files, to make it installed and working as a
|
||||||
|
yamllint plugin like below. (``<plugin_name>`` is that plugin name and
|
||||||
|
``<plugin_src_dir>`` is a dir where the rule modules exist.)
|
||||||
|
::
|
||||||
|
|
||||||
|
[options.entry_points]
|
||||||
|
yamllint.plugins.rules =
|
||||||
|
<plugin_name> = <plugin_src_dir>
|
||||||
|
|
||||||
|
#. It must contain custom yamllint rule modules:
|
||||||
|
|
||||||
|
- Each rule module must define a couple of global variables, ID and TYPE. ID
|
||||||
|
must not conflicts with other rules' ID.
|
||||||
|
- Each rule module must define a function named 'check' to test input data
|
||||||
|
complies with the rule.
|
||||||
|
- Each rule module may have other global variables.
|
||||||
|
|
||||||
|
- CONF to define its configuration parameters and those types.
|
||||||
|
- DEFAULT to provide default values for each configuration parameters.
|
||||||
|
|
||||||
|
#. It must define a global variable RULES_MAP to provide mappings of rule ID
|
||||||
|
and rule modules to yamllint like this.
|
||||||
|
::
|
||||||
|
|
||||||
|
RULES_MAP = {
|
||||||
|
# rule ID: rule module
|
||||||
|
a_custom_rule.ID: a_custom_rule
|
||||||
|
}
|
||||||
|
|
||||||
|
To develop yamllint rules, the default rules themselves in yamllint may become
|
||||||
|
good references.
|
||||||
|
|||||||
Reference in New Issue
Block a user