1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2024-12-25 01:06:50 +00:00

Don't rebuild command line parser for each invocation

Makes tests faster
This commit is contained in:
Marian Beermann 2016-05-25 22:01:38 +02:00
parent 4302ffbdbc
commit 0e3bba7b64
2 changed files with 5 additions and 5 deletions

View file

@ -96,9 +96,10 @@ def wrapper(self, args, repository, key, manifest, **kwargs):
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 @@ def preprocess_args(self, args):
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 @@ def parse_args(self, args=None):
# 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

View file

@ -159,7 +159,7 @@ def run(self):
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: