import abc import argparse import inspect class Command(object): """Base class for command plugins. :param app: Application instance invoking the command. :paramtype app: cliff.app.App """ __metaclass__ = abc.ABCMeta def __init__(self, app, app_args): self.app = app self.app_args = app_args return def get_description(self): """Return the command description. """ return inspect.getdoc(self.__class__) or '' def get_parser(self, prog_name): """Return an argparse.ArgumentParser. """ parser = argparse.ArgumentParser( description=self.get_description(), prog=prog_name, ) return parser @abc.abstractmethod def take_action(self, parsed_args): """Return a two-part tuple with a tuple of column names and a tuple of values. """ def run(self, parsed_args): """Do something useful. """ self.take_action(parsed_args) return 0