blob: aa3852f7fa943d20635a513545a18192b82cef7b [file] [log] [blame]
.. _module-pw_cli-api:
=============
API Reference
=============
.. pigweed-module-subpage::
:name: pw_cli
-----------------
pw_cli.decorators
-----------------
.. automodule:: pw_cli.decorators
:members:
------------------
pw_cli.file_filter
------------------
.. automodule:: pw_cli.file_filter
:members:
---------------
pw_cli.git_repo
---------------
.. automodule:: pw_cli.git_repo
:members:
----------
pw_cli.log
----------
.. automodule:: pw_cli.log
:members:
--------------
pw_cli.plugins
--------------
:py:mod:`pw_cli.plugins` provides general purpose plugin functionality. The
module can be used to create plugins for command line tools, interactive
consoles, or anything else. Pigweed's ``pw`` command uses this module for its
plugins.
To use plugins, create a :py:class:`pw_cli.plugins.Registry`. The registry may
have an optional validator function that checks plugins before they are
registered (see :py:meth:`pw_cli.plugins.Registry.__init__`).
Plugins may be registered in a few different ways.
* **Direct function call.** Register plugins by calling
:py:meth:`pw_cli.plugins.Registry.register` or
:py:meth:`pw_cli.plugins.Registry.register_by_name`.
.. code-block:: python
import pw_cli
_REGISTRY = pw_cli.plugins.Registry()
_REGISTRY.register('plugin_name', my_plugin)
_REGISTRY.register_by_name('plugin_name', 'module_name', 'function_name')
* **Decorator.** Register using the :py:meth:`pw_cli.plugins.Registry.plugin`
decorator.
.. code-block:: python
import pw_cli
_REGISTRY = pw_cli.plugins.Registry()
# This function is registered as the "my_plugin" plugin.
@_REGISTRY.plugin
def my_plugin():
pass
# This function is registered as the "input" plugin.
@_REGISTRY.plugin(name='input')
def read_something():
pass
The decorator may be aliased to give a cleaner syntax (e.g. ``register =
my_registry.plugin``).
* **Plugins files.** Plugins files use a simple format:
.. code-block::
# Comments start with "#". Blank lines are ignored.
name_of_the_plugin module.name module_member
another_plugin some_module some_function
These files are placed in the file system and apply similarly to Git's
``.gitignore`` files. From Python, these files are registered using
:py:meth:`pw_cli.plugins.Registry.register_file` and
:py:meth:`pw_cli.plugins.Registry.register_directory`.
.. automodule:: pw_cli.plugins
:members:
-------------
pw_cli.plural
-------------
.. automodule:: pw_cli.plural
:members:
----------------------
pw_cli.status_reporter
----------------------
.. automodule:: pw_cli.status_reporter
:members:
------------------
pw_cli.tool_runner
------------------
.. automodule:: pw_cli.tool_runner
:members:
:exclude-members: ToolRunner
.. autoclass:: pw_cli.tool_runner.ToolRunner
:special-members: +__call__
:private-members: +_run_tool, _custom_args