Browse Source

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.
Thomas Waldmann 8 years ago
parent
commit
5a40870416
1 changed files with 9 additions and 2 deletions
  1. 9 2
      borg/archiver.py

+ 9 - 2
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='<command>')
+        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='<command>')
+        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