From 320cbb0308f487f69c8d52bfb5fa06a61a17e7ab Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Sat, 25 Dec 2010 16:52:12 +0000 Subject: [PATCH] Cleanup of CLI output (sorts lists, gives additional help, straight columns) and don't crash on non-gui Options svn: r16312 --- src/cli/arghandler.py | 12 ++++++------ src/cli/plug/__init__.py | 16 +++++++++++----- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/cli/arghandler.py b/src/cli/arghandler.py index 154165d62..e0bea8b51 100644 --- a/src/cli/arghandler.py +++ b/src/cli/arghandler.py @@ -302,16 +302,16 @@ class ArgHandler(object): if self.list: print 'List of known family trees in your database path\n' - for name, dirname in self.dbman.family_tree_list(): - print dirname, ', with name ', name.encode(sys.getfilesystemencoding()) + for name, dirname in sorted(self.dbman.family_tree_list(), key=lambda pair: pair[0].lower()): + print "%s with name \"%s\"" % (dirname, name.encode(sys.getfilesystemencoding())) sys.exit(0) if self.list_more: print 'Gramps Family Trees:' summary_list = self.dbman.family_tree_summary() - for summary in summary_list: + for summary in sorted(summary_list, key=lambda summary: summary["Family tree"].lower()): print "Family Tree \"%s\":" % summary["Family tree"] - for item in summary: + for item in sorted(summary): if item != "Family tree": print " %s: %s" % (item, summary[item]) sys.exit(0) @@ -497,7 +497,7 @@ class ArgHandler(object): msg = "Report name not given. Please use one of [-p|--options] name=reportname." print >> sys.stderr, "%s\n Available names are:" % msg - for pdata in _cl_list: + for pdata in sorted(_cl_list, key= lambda pdata: pdata.id.lower()): # Print cli report name ([item[0]) and GUI report name (item[4]) if len(pdata.id) <= 25: print >> sys.stderr, \ @@ -536,7 +536,7 @@ class ArgHandler(object): msg = "Tool name not given. Please use one of [-p|--options] name=toolname." print >> sys.stderr, "%s\n Available names are:" % msg - for pdata in _cli_tool_list: + for pdata in sorted(_cli_tool_list, key=lambda pdata: pdata.id.lower()): # Print cli report name ([item[0]) and GUI report name (item[4]) if len(pdata.id) <= 25: print >> sys.stderr, \ diff --git a/src/cli/plug/__init__.py b/src/cli/plug/__init__.py index 62809fed5..516a79352 100644 --- a/src/cli/plug/__init__.py +++ b/src/cli/plug/__init__.py @@ -52,7 +52,7 @@ from gen.plug.docgen import (StyleSheet, StyleSheetList, PaperStyle, from gen.plug.menu import (FamilyOption, PersonOption, NoteOption, MediaOption, PersonListOption, NumberOption, BooleanOption, DestinationOption, StringOption, - TextOption, EnumeratedListOption) + TextOption, EnumeratedListOption, Option) from gen.display.name import displayer as name_displayer from Errors import ReportError from gen.plug.report import (CATEGORY_TEXT, CATEGORY_DRAW, CATEGORY_BOOK, @@ -289,8 +289,12 @@ class CommandLineReport(object): for (value, description) in option.get_items(): ilist.append("%s\t%s" % (value, description)) self.options_help[name].append(ilist) + elif isinstance(option, Option): + self.options_help[name].append(option.get_help()) else: print "Unknown option: ", option + print " Valid options are:", ", ".join(self.options_dict.keys()) + print " Use 'show=option' to see description and acceptable values" def parse_options(self): """ @@ -313,6 +317,8 @@ class CommandLineReport(object): else: print "Ignoring unknown option: %s" % opt + print " Valid options are:", ", ".join(self.options_dict.keys()) + print " Use 'show=option' to see description and acceptable values" self.option_class.handler.output = self.options_dict['of'] @@ -369,11 +375,11 @@ class CommandLineReport(object): return elif self.show == 'all': print " Available options:" - for key in self.options_dict: + for key in sorted(self.options_dict.keys()): if key in self.options_help: opt = self.options_help[key] # Make the output nicer to read, assume that tab has 8 spaces - tabs = '\t' if len(key) < 10 else '\t'*2 + tabs = '\t\t' if len(key) < 10 else '\t' optmsg = " %s%s%s (%s)" % (key, tabs, opt[1], opt[0]) print optmsg.encode(sys.getfilesystemencoding()) else: @@ -382,13 +388,13 @@ class CommandLineReport(object): print " Use 'show=option' to see description and acceptable values" elif self.show in self.options_help: opt = self.options_help[self.show] - tabs = '\t' if len(self.show) < 10 else '\t'*2 + tabs = '\t\t' if len(self.show) < 10 else '\t' print ' %s%s%s%s' % (self.show, tabs, opt[0], opt[1]) print " Available values are:" vals = opt[2] if isinstance(vals, (list, tuple)): for val in vals: - optmsg = " %s" % key + optmsg = " %s" % val print optmsg.encode(sys.getfilesystemencoding()) else: optmsg = " %s" % opt[2]