diff --git a/borg/archiver.py b/borg/archiver.py index 96ac6bee0..d9eebeebb 100644 --- a/borg/archiver.py +++ b/borg/archiver.py @@ -96,9 +96,10 @@ def with_archive(method): class Archiver: - def __init__(self, lock_wait=None): + def __init__(self, lock_wait=None, prog=None): self.exit_code = EXIT_SUCCESS self.lock_wait = lock_wait + self.parser = self.build_parser(prog) def print_error(self, msg, *args): msg = args and msg % args or msg @@ -1118,7 +1119,7 @@ class Archiver: self.print_warning(warning) return args - def build_parser(self, args=None, prog=None): + def build_parser(self, prog=None): common_parser = argparse.ArgumentParser(add_help=False, prog=prog) common_group = common_parser.add_argument_group('Common options') @@ -2062,8 +2063,7 @@ class Archiver: # We can't use argparse for "serve" since we don't want it to show up in "Available commands" if args: args = self.preprocess_args(args) - parser = self.build_parser(args) - args = parser.parse_args(args or ['-h']) + args = self.parser.parse_args(args or ['-h']) update_excludes(args) return args diff --git a/setup.py b/setup.py index 2ded99080..4f0159acc 100644 --- a/setup.py +++ b/setup.py @@ -159,7 +159,7 @@ class build_usage(Command): print('generating usage docs') # allows us to build docs without the C modules fully loaded during help generation from borg.archiver import Archiver - parser = Archiver().build_parser(prog='borg') + parser = Archiver(prog='borg').parser choices = {} for action in parser._actions: if action.choices is not None: