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.:

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 for more information on creating an entry point. To search for entry point plugins, you can call mach.main.Mach.load_commands_from_entry_point(). e.g.:


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 mach.main.Mach.add_global_argument(). e.g.:

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.')