Ver código fonte

support common options on mid-level commands (borg *key* export)

Marian Beermann 8 anos atrás
pai
commit
2ab5df0217
1 arquivos alterados com 8 adições e 4 exclusões
  1. 8 4
      src/borg/archiver.py

+ 8 - 4
src/borg/archiver.py

@@ -1904,7 +1904,7 @@ class Archiver:
             # From lowest precedence to highest precedence:
             # An option specified on the parser belonging to index 0 is overridden if the
             # same option is specified on any parser with a higher index.
-            SUFFIX_PRECEDENCE = ('_maincommand', '_subcommand')
+            SUFFIX_PRECEDENCE = ('_maincommand', '_midcommand', '_subcommand')
 
             def __init__(self):
                 from collections import defaultdict
@@ -2040,6 +2040,10 @@ class Archiver:
         common_parser.set_defaults(paths=[], patterns=[])
         parser.common_options.add_common_group(common_parser, '_subcommand')
 
+        mid_common_parser = argparse.ArgumentParser(add_help=False, prog=self.prog)
+        mid_common_parser.set_defaults(paths=[], patterns=[])
+        parser.common_options.add_common_group(mid_common_parser, '_midcommand')
+
         subparsers = parser.add_subparsers(title='required arguments', metavar='<command>')
 
         serve_epilog = process_epilog("""
@@ -2221,7 +2225,7 @@ class Archiver:
                                help='work slower, but using less space')
         self.add_archives_filters_args(subparser)
 
-        subparser = subparsers.add_parser('key', parents=[common_parser], add_help=False,
+        subparser = subparsers.add_parser('key', parents=[mid_common_parser], add_help=False,
                                           description="Manage a keyfile or repokey of a repository",
                                           epilog="",
                                           formatter_class=argparse.RawDescriptionHelpFormatter,
@@ -3221,7 +3225,7 @@ 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', parents=[common_parser], add_help=False,
+        subparser = subparsers.add_parser('debug', parents=[mid_common_parser], add_help=False,
                                           description='debugging command (not intended for normal use)',
                                           epilog=debug_epilog,
                                           formatter_class=argparse.RawDescriptionHelpFormatter,
@@ -3362,7 +3366,7 @@ class Archiver:
 
         benchmark_epilog = process_epilog("These commands do various benchmarks.")
 
-        subparser = subparsers.add_parser('benchmark', parents=[common_parser], add_help=False,
+        subparser = subparsers.add_parser('benchmark', parents=[mid_common_parser], add_help=False,
                                           description='benchmark command',
                                           epilog=benchmark_epilog,
                                           formatter_class=argparse.RawDescriptionHelpFormatter,