38 lines
979 B
Python
38 lines
979 B
Python
"""Interface for creating a resmoke plugin."""
|
|
|
|
import abc
|
|
|
|
|
|
class Subcommand(object):
|
|
"""A resmoke subcommand to execute."""
|
|
|
|
def execute(self):
|
|
"""Execute the subcommand."""
|
|
raise NotImplementedError(
|
|
"execute must be implemented by Subcommand subclasses"
|
|
)
|
|
|
|
|
|
class PluginInterface(abc.ABC):
|
|
"""Subcommand/plugin interface."""
|
|
|
|
def add_subcommand(self, subparsers):
|
|
"""
|
|
Add parser options for this plugin.
|
|
|
|
:param subparsers: argparse subparsers
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def parse(self, subcommand, parser, parsed_args, **kwargs):
|
|
"""
|
|
Resolve command-line options to a Subcommand or None.
|
|
|
|
:param subcommand: equivalent to parsed_args.command
|
|
:param parser: parser used
|
|
:param parsed_args: output of parsing
|
|
:param kwargs: additional args
|
|
:return: None or a Subcommand
|
|
"""
|
|
raise NotImplementedError()
|