From 4a30bf55ac3a067c668058299cbd355ab63e9dd9 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Wed, 3 Apr 2013 10:40:30 +0200 Subject: Display full command documentation in online help ipa -h only showed the summary string, not the full help. Use the full docstring. Add a custom help formatter that disables optparse's reformatting. Test included https://fedorahosted.org/freeipa/ticket/3543 --- ipalib/cli.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'ipalib/cli.py') diff --git a/ipalib/cli.py b/ipalib/cli.py index d5a5b842..84dea2e5 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -1098,7 +1098,8 @@ class cli(backend.Executioner): def build_parser(self, cmd): parser = CLIOptionParser( usage=' '.join(self.usage_iter(cmd)), - description=cmd.summary, + description=unicode(cmd.doc), + formatter=IPAHelpFormatter(), ) option_groups = {} for option in cmd.options(): @@ -1257,6 +1258,21 @@ class cli(backend.Executioner): kw[p.name] = self.Backend.textui.decode(raw) +class IPAHelpFormatter(optparse.IndentedHelpFormatter): + """Formatter suitable for printing IPA command help + + The default help formatter reflows text to fit the terminal, but it + ignores line/paragraph breaks. + IPA's descriptions already have correct line breaks. This formatter + doesn't touch them (save for removing initial/trailing whitespace). + """ + def format_description(self, description): + if description: + return description.strip() + else: + return "" + + cli_plugins = ( cli, textui, -- cgit