summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylvain Th?nault <sylvain.thenault@logilab.fr>2010-09-16 15:37:21 +0200
committerSylvain Th?nault <sylvain.thenault@logilab.fr>2010-09-16 15:37:21 +0200
commit382b2d6cbbb122ddf8e93363f427d266d857aa6c (patch)
tree62b681a427acf9721bdb12089e1037ff4f8e24c4
parentc37bbfe92af23de7c97e3c808656c7fba4821862 (diff)
downloadlogilab-common-382b2d6cbbb122ddf8e93363f427d266d857aa6c.tar.gz
[optparse] avoid empty section when displaying usage
-rw-r--r--optik_ext.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/optik_ext.py b/optik_ext.py
index 44d0504..3565877 100644
--- a/optik_ext.py
+++ b/optik_ext.py
@@ -242,6 +242,7 @@ class Option(BaseOption):
return self.take_action(
self.action, self.dest, opt, value, values, parser)
+
class OptionParser(BaseParser):
"""override optik.OptionParser to use our Option class
"""
@@ -260,7 +261,8 @@ class OptionParser(BaseParser):
result.append(OptionContainer.format_option_help(self, formatter))
result.append("\n")
for group in self.option_groups:
- if group.level <= outputlevel:
+ if group.level <= outputlevel and (
+ group.description or level_options(group, outputlevel)):
result.append(group.format_help(formatter))
result.append("\n")
formatter.dedent()
@@ -270,15 +272,18 @@ class OptionParser(BaseParser):
OptionGroup.level = 0
+def level_options(group, outputlevel):
+ return [option for option in group.option_list
+ if getattr(option, 'level', 0) <= outputlevel
+ and not option.help is SUPPRESS_HELP]
+
def format_option_help(self, formatter):
result = []
- outputlevel = getattr(formatter, 'output_level', 0)
- for option in self.option_list:
- if getattr(option, 'level', 0) <= outputlevel and not option.help is SUPPRESS_HELP:
- result.append(formatter.format_option(option))
+ for option in level_options(self, getattr(formatter, 'output_level', 0)):
+ result.append(formatter.format_option(option))
return "".join(result)
OptionContainer.format_option_help = format_option_help
-OptionContainer.format_option_help = format_option_help
+
class ManHelpFormatter(HelpFormatter):
"""Format help using man pages ROFF format"""