summaryrefslogtreecommitdiff
path: root/cliff/display.py
diff options
context:
space:
mode:
Diffstat (limited to 'cliff/display.py')
-rw-r--r--cliff/display.py82
1 files changed, 0 insertions, 82 deletions
diff --git a/cliff/display.py b/cliff/display.py
deleted file mode 100644
index edea1f3..0000000
--- a/cliff/display.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"""Application base class for displaying data.
-"""
-import abc
-import logging
-
-import stevedore
-
-from .command import Command
-
-
-LOG = logging.getLogger(__name__)
-
-
-class DisplayCommandBase(Command):
- """Command base class for displaying data about a single object.
- """
- __metaclass__ = abc.ABCMeta
-
- def __init__(self, app, app_args):
- super(DisplayCommandBase, self).__init__(app, app_args)
- self.formatters = self._load_formatter_plugins()
-
- @abc.abstractproperty
- def formatter_namespace(self):
- "String specifying the namespace to use for loading formatter plugins."
-
- @abc.abstractproperty
- def formatter_default(self):
- "String specifying the name of the default formatter."
-
- def _load_formatter_plugins(self):
- # Here so tests can override
- return stevedore.ExtensionManager(
- self.formatter_namespace,
- invoke_on_load=True,
- )
-
- def get_parser(self, prog_name):
- parser = super(DisplayCommandBase, self).get_parser(prog_name)
- formatter_group = parser.add_argument_group(
- title='output formatters',
- description='output formatter options',
- )
- formatter_choices = sorted(self.formatters.names())
- formatter_default = self.formatter_default
- if formatter_default not in formatter_choices:
- formatter_default = formatter_choices[0]
- formatter_group.add_argument(
- '-f', '--format',
- dest='formatter',
- action='store',
- choices=formatter_choices,
- default=formatter_default,
- help='the output format, defaults to %s' % formatter_default,
- )
- formatter_group.add_argument(
- '-c', '--column',
- action='append',
- default=[],
- dest='columns',
- metavar='COLUMN',
- help='specify the column(s) to include, can be repeated',
- )
- for formatter in self.formatters:
- formatter.obj.add_argument_group(parser)
- return parser
-
- @abc.abstractmethod
- def produce_output(self, parsed_args, column_names, data):
- """Use the formatter to generate the output.
-
- :param parsed_args: argparse.Namespace instance with argument values
- :param column_names: sequence of strings containing names
- of output columns
- :param data: iterable with values matching the column names
- """
-
- def run(self, parsed_args):
- self.formatter = self.formatters[parsed_args.formatter].obj
- column_names, data = self.take_action(parsed_args)
- self.produce_output(parsed_args, column_names, data)
- return 0