fune/python/mach/docs/driver.rst
ahochheiden 8e819ce0b9 Bug 1695312 - Add the ability for dispatch to ad-hoc load command modules that aren't already loaded r=firefox-build-system-reviewers,glandium
This is really just shuffling a bunch of things around. None of the
'load_*' member functions of the `Mach` class actually needed to be
member functions. They can all be static so that they can be used
anywhere. That combined with moving all the other 'mach_command' logic
to a different file, allows us to load the module for any command so
that we can successfully dispatch it.

Differential Revision: https://phabricator.services.mozilla.com/D184060
2023-07-25 00:24:53 +00:00

32 lines
907 B
ReStructuredText

.. _mach_driver:
=======
Drivers
=======
Entry Points
============
It is possible to use setuptools' entry points to load commands
directly from python packages. A mach entry point is a function which
returns a list of files or directories containing mach command
providers. e.g.:
.. code-block:: python
def list_providers():
providers = []
here = os.path.abspath(os.path.dirname(__file__))
for p in os.listdir(here):
if p.endswith('.py'):
providers.append(os.path.join(here, p))
return providers
See http://pythonhosted.org/setuptools/setuptools.html#dynamic-discovery-of-services-and-plugins
for more information on creating an entry point. To search for entry
point plugins, you can call
:py:meth:`mach.command_util.load_commands_from_entry_point`. e.g.:
.. code-block:: python
load_commands_from_entry_point("mach.external.providers")