--- src/virtBootstrap/virt_bootstrap.py | 151 +++++++++++++++++++++++++++--------- 1 file changed, 114 insertions(+), 37 deletions(-) diff --git a/src/virtBootstrap/virt_bootstrap.py b/src/virtBootstrap/virt_bootstrap.py index 50fb604..dc7f9d7 100755 --- a/src/virtBootstrap/virt_bootstrap.py +++ b/src/virtBootstrap/virt_bootstrap.py @@ -174,6 +174,7 @@ def set_logging_conf(loglevel=None): def main(): parser = argparse.ArgumentParser( description=_("Container bootstrapping tool"), + conflict_handler='resolve', formatter_class=argparse.RawDescriptionHelpFormatter, epilog=dedent(_(''' Example supported URI formats: @@ -187,43 +188,119 @@ def main(): ---------------------------------------- '''))) - parser.add_argument("uri", - help=_("URI of container image")) - parser.add_argument("dest", - help=_("Destination folder")) - parser.add_argument("--not-secure", action='store_true', - help=_("Ignore HTTPS errors")) - parser.add_argument("-u", "--username", default=None, - help=_("Username for accessing the source registry")) - parser.add_argument("-p", "--password", default=None, - help=_("Password for accessing the source registry")) - parser.add_argument("--root-password", default=None, - help=_("Set root password")) - parser.add_argument("--uidmap", default=None, action='append', - metavar="<start>:<target>:<count>", - help=_("Map UIDs")) - parser.add_argument("--gidmap", default=None, action='append', - metavar="<start>:<target>:<count>", - help=_("Map GIDs")) - parser.add_argument("--idmap", default=None, action='append', - metavar="<start>:<target>:<count>", - help=_("Map both UIDs/GIDs")) - parser.add_argument("--no-cache", action="store_true", - help=_("Do not store downloaded Docker images")) - parser.add_argument("-f", "--format", default=utils.DEFAULT_OUTPUT_FORMAT, - choices=['dir', 'qcow2'], - help=_("Format to be used for the root filesystem")) - parser.add_argument("-d", "--debug", action="store_const", dest="loglevel", - const=logging.DEBUG, help=_("Show debug messages")) - parser.add_argument("-q", "--quiet", action="store_const", dest="loglevel", - const=logging.WARNING, - help=_("Don't print progress messages")) - parser.add_argument("--status-only", action="store_const", - const=utils.write_progress, - help=_("Show only progress information")) - parser.add_argument('--version', action='version', - version='%(prog)s ' + __version__, - help=_("Print the version")) + + # pylint: disable=protected-access + parser._positionals.title = 'ARGUMENTS' + parser._optionals.title = 'OPTIONS' + + parser.add_argument( + "URI", help=_("URI of container image") + ) + parser.add_argument( + "DEST", help=_("Destination folder") + ) + parser.add_argument( + '--version', + help=_("Print the version"), + action='version', + version='%(prog)s ' + __version__ + ) + parser.add_argument( + "-f", "--format", + help=_('Output format of the root filesystem. ' + 'Allowed values are "dir" (default) and "qcow2".'), + default=utils.DEFAULT_OUTPUT_FORMAT, + choices=['dir', 'qcow2'], + metavar='' + ) + parser.add_argument( + "--root-password", + help=_("Set root password"), + default=None, + metavar='' + ) + parser.add_argument( + "--no-cache", + help=_("Do not store downloaded Docker images"), + action="store_true" + ) + parser.add_argument( + "-d", "--debug", + help=_("Show debug messages"), + action="store_const", + dest="loglevel", + const=logging.DEBUG + ) + parser.add_argument( + "-q", "--quiet", + help=_("Don't print progress messages"), + action="store_const", + dest="loglevel", + const=logging.WARNING + ) + parser.add_argument( + "--status-only", + help=_("Show only progress information"), + action="store_const", + const=utils.write_progress + ) + + # Authentication arguments + auth_group = parser.add_argument_group( + title='AUTHENTICATION', + description='Credentials used to authenticte to ' + 'Docker source registry.' + ) + auth_group.add_argument( + "-u", "--username", + help=_("Use USERNAME to access source registry"), + default=None, + metavar='USERNAME' + ) + auth_group.add_argument("-u", help="", default=None, metavar='USERNAME') + auth_group.add_argument( + "-p", "--password", + help=_("Use PASSWORD to access source registry"), + default=None, + metavar='PASSWORD' + ) + auth_group.add_argument("-p", help="", default=None, metavar='PASSWORD') + auth_group.add_argument( + "--not-secure", + help=_("Ignore HTTPS errors"), + action='store_true' + ) + + # Ownership mapping arguments + idmap_group = parser.add_argument_group( + title='UID/GID mapping', + description='Remapping ownership of all files inside rootfs.\n' + 'These arguments can be specified multiple times.\n' + 'Format:\t<start>:<target>:<count>\n' + 'Example:\t--idmap 500:1500:10 --idmap 0:1000:10' + ) + idmap_group.add_argument( + "--uidmap", + help=_("Map UIDs"), + default=None, + action='append', + metavar='' + ) + idmap_group.add_argument( + "--gidmap", + help=_("Map GIDs"), + default=None, + action='append', + metavar='' + ) + idmap_group.add_argument( + "--idmap", + help=_("Map both UIDs/GIDs"), + default=None, + action='append', + metavar='' + ) + try: args = parser.parse_args() -- 2.13.5 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list