|
@@ -348,11 +348,11 @@ class Location:
|
|
|
""" + optional_archive_re, re.VERBOSE) # archive name (optional, may be empty)
|
|
|
|
|
|
def __init__(self, text=''):
|
|
|
- self.orig = text
|
|
|
- if not self.parse(self.orig):
|
|
|
- raise ValueError('Location: parse failed: %s' % self.orig)
|
|
|
+ if not self.parse(text):
|
|
|
+ raise ValueError('Invalid location format: "%s"' % self.orig)
|
|
|
|
|
|
def parse(self, text):
|
|
|
+ self.orig = text
|
|
|
text = replace_placeholders(text)
|
|
|
valid = self._parse(text)
|
|
|
if valid:
|
|
@@ -364,10 +364,9 @@ class Location:
|
|
|
if repo is None:
|
|
|
return False
|
|
|
valid = self._parse(repo)
|
|
|
- if not valid:
|
|
|
- return False
|
|
|
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 normpath_special(p):
|
|
@@ -452,8 +451,8 @@ def location_validator(archive=None, proto=None):
|
|
|
def validator(text):
|
|
|
try:
|
|
|
loc = Location(text)
|
|
|
- except ValueError:
|
|
|
- raise argparse.ArgumentTypeError('Invalid location format: "%s"' % text) from None
|
|
|
+ except ValueError as err:
|
|
|
+ raise argparse.ArgumentTypeError(str(err)) from None
|
|
|
if archive is True and not loc.archive:
|
|
|
raise argparse.ArgumentTypeError('"%s": No archive specified' % text)
|
|
|
elif archive is False and loc.archive:
|