Calculate a suitable column width for positional arguments

Overwrite the method add_arguments in the class
OpenStackHelpFormatter to calculate a suitable columnt width
(max_help_position) for the positional arguments.

example output before this patch:

    ec2-credentials-create
                        Create EC2-compatible credentials for user per tenant.
    ec2-credentials-delete
                        Delete EC2-compatible credentials.
    ec2-credentials-get
                        Display EC2-compatible credentials.
    ec2-credentials-list
                        List EC2-compatible credentials for a user.

example output after this patch:

    ec2-credentials-create  Create EC2-compatible credentials for user per
                            tenant.
    ec2-credentials-delete  Delete EC2-compatible credentials.
    ec2-credentials-get     Display EC2-compatible credentials.
    ec2-credentials-list    List EC2-compatible credentials for a user.

Change-Id: Ibd5d3502022d2afcfd4f57fef9a0bbf23d34b767
Closes-Bug: #1326471
This commit is contained in:
Christian Berendt
2014-06-04 20:27:06 +02:00
parent 3d3e0e485c
commit a31cc3293e

View File

@@ -437,6 +437,18 @@ class OpenStackIdentityShell(object):
# I'm picky about my shell help.
class OpenStackHelpFormatter(argparse.HelpFormatter):
INDENT_BEFORE_ARGUMENTS = 6
MAX_WIDTH_ARGUMENTS = 32
def add_arguments(self, actions):
for action in filter(lambda x: not x.option_strings, actions):
for choice in action.choices:
length = len(choice) + self.INDENT_BEFORE_ARGUMENTS
if(length > self._max_help_position and
length <= self.MAX_WIDTH_ARGUMENTS):
self._max_help_position = length
super(OpenStackHelpFormatter, self).add_arguments(actions)
def start_section(self, heading):
# Title-case the headings
heading = '%s%s' % (heading[0].upper(), heading[1:])