summaryrefslogtreecommitdiff
path: root/cliff/display.py
diff options
context:
space:
mode:
Diffstat (limited to 'cliff/display.py')
-rw-r--r--cliff/display.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/cliff/display.py b/cliff/display.py
index 2d9a7f7..6d9f522 100644
--- a/cliff/display.py
+++ b/cliff/display.py
@@ -70,14 +70,23 @@ class DisplayCommandBase(Command):
return parser
@abc.abstractmethod
- def get_data(self, parsed_args):
+ def take_action(self, parsed_args):
"""Return a two-part tuple with a tuple of column names
and a tuple of values.
"""
@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):
- column_names, data = self.get_data(parsed_args)
- formatter = self.formatters[parsed_args.formatter]
- formatter.emit_one(column_names, data, self.app.stdout, parsed_args)
+ column_names, data = self.take_action(parsed_args)
+ self.formatter = self.formatters[parsed_args.formatter]
+ self.produce_output(parsed_args, column_names, data)
return 0