From 5a40870416a85ab08c3dca0d9b62808450cf2101 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Wed, 14 Dec 2016 00:00:09 +0100 Subject: [PATCH] add a borg debug/key dummy command, fixes #1932 the problem was that there neither was a do_debug implementation for the case someone just enters "borg debug", nor did the parser inherit from common_parser (so accessing .umask triggered an exception before setup_logging() was called, which triggered another exception when log output should have been emitted). same for do_key ("borg key"). added a generic handler that just prints the subcommand help. --- borg/archiver.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/borg/archiver.py b/borg/archiver.py index bd3382251..cb02d4d8a 100644 --- a/borg/archiver.py +++ b/borg/archiver.py @@ -992,6 +992,11 @@ class Archiver: parser.error('No help available on %s' % (args.topic,)) return self.exit_code + def do_subcommand_help(self, parser, args): + """display infos about subcommand""" + parser.print_help() + return EXIT_SUCCESS + def preprocess_args(self, args): deprecations = [ # ('--old', '--new', 'Warning: "--old" has been deprecated. Use "--new" instead.'), @@ -1148,13 +1153,14 @@ class Archiver: subparser.add_argument('location', metavar='REPOSITORY', nargs='?', default='', type=location_validator(archive=False)) - subparser = subparsers.add_parser('key', + subparser = subparsers.add_parser('key', parents=[common_parser], description="Manage a keyfile or repokey of a repository", epilog="", formatter_class=argparse.RawDescriptionHelpFormatter, help='manage repository key') key_parsers = subparser.add_subparsers(title='required arguments', metavar='') + subparser.set_defaults(func=functools.partial(self.do_subcommand_help, subparser)) key_export_epilog = textwrap.dedent(""" If repository encryption is used, the repository is inaccessible @@ -1681,13 +1687,14 @@ class Archiver: in case you ever run into some severe malfunction. Use them only if you know what you are doing or if a trusted developer tells you what to do.""") - subparser = subparsers.add_parser('debug', + subparser = subparsers.add_parser('debug', parents=[common_parser], description='debugging command (not intended for normal use)', epilog=debug_epilog, formatter_class=argparse.RawDescriptionHelpFormatter, help='debugging command (not intended for normal use)') debug_parsers = subparser.add_subparsers(title='required arguments', metavar='') + subparser.set_defaults(func=functools.partial(self.do_subcommand_help, subparser)) debug_info_epilog = textwrap.dedent(""" This command displays some system information that might be useful for bug