1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2024-12-25 09:19:31 +00:00

invalid locations: give err msg containing parsed location, fixes #4179

(cherry picked from commit 65d8091245)
This commit is contained in:
Thomas Waldmann 2018-11-28 01:04:28 +01:00
parent 0db87c116a
commit 14464161ed

View file

@ -1045,11 +1045,11 @@ class Location:
""" + optional_archive_re, re.VERBOSE) # archive name (optional, may be empty) """ + optional_archive_re, re.VERBOSE) # archive name (optional, may be empty)
def __init__(self, text=''): def __init__(self, text=''):
self.orig = text if not self.parse(text):
if not self.parse(self.orig): raise ValueError('Invalid location format: "%s"' % self.orig)
raise ValueError('Location: parse failed: %s' % self.orig)
def parse(self, text): def parse(self, text):
self.orig = text
text = replace_placeholders(text) text = replace_placeholders(text)
valid = self._parse(text) valid = self._parse(text)
if valid: if valid:
@ -1061,10 +1061,9 @@ def parse(self, text):
if repo is None: if repo is None:
return False return False
valid = self._parse(repo) valid = self._parse(repo)
if not valid:
return False
self.archive = m.group('archive') self.archive = m.group('archive')
return True self.orig = repo if not self.archive else '%s::%s' % (repo, self.archive)
return valid
def _parse(self, text): def _parse(self, text):
def normpath_special(p): def normpath_special(p):
@ -1149,8 +1148,8 @@ def location_validator(archive=None, proto=None):
def validator(text): def validator(text):
try: try:
loc = Location(text) loc = Location(text)
except ValueError: except ValueError as err:
raise argparse.ArgumentTypeError('Invalid location format: "%s"' % text) from None raise argparse.ArgumentTypeError(str(err)) from None
if archive is True and not loc.archive: if archive is True and not loc.archive:
raise argparse.ArgumentTypeError('"%s": No archive specified' % text) raise argparse.ArgumentTypeError('"%s": No archive specified' % text)
elif archive is False and loc.archive: elif archive is False and loc.archive: