12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- .. _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.main.Mach.load_commands_from_entry_point`. e.g.:
- .. code-block:: python
- mach.load_commands_from_entry_point("mach.external.providers")
- Adding Global Arguments
- =======================
- Arguments to mach commands are usually command-specific. However,
- mach ships with a handful of global arguments that apply to all
- commands.
- It is possible to extend the list of global arguments. In your
- *mach driver*, simply call
- :py:meth:`mach.main.Mach.add_global_argument`. e.g.:
- .. code-block:: python
- mach = mach.main.Mach(os.getcwd())
- # Will allow --example to be specified on every mach command.
- mach.add_global_argument('--example', action='store_true',
- help='Demonstrate an example global argument.')
|