mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
More verbose errors for NoManifestExceptions.
The old "manifest required for this command -- please run init" is replaced by a more helpful message that lists the command repo was trying to execute (with arguments) as well as the str() of the NoManifestException. For example: > error: in `sync`: [Errno 2] No such file or directory: > 'path/to/.repo/manifests/.git/HEAD' > error: manifest missing or unreadable -- please run init Other failure points in basic command parsing and dispatch are more clearly explained in the same fashion. Change-Id: I6212e5c648bc5d57e27145d55a5391ca565e4149
This commit is contained in:
parent
093fdb6587
commit
53e902a19b
7
error.py
7
error.py
@ -24,6 +24,13 @@ class ManifestInvalidRevisionError(Exception):
|
|||||||
class NoManifestException(Exception):
|
class NoManifestException(Exception):
|
||||||
"""The required manifest does not exist.
|
"""The required manifest does not exist.
|
||||||
"""
|
"""
|
||||||
|
def __init__(self, path, reason):
|
||||||
|
super(NoManifestException, self).__init__()
|
||||||
|
self.path = path
|
||||||
|
self.reason = reason
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.reason
|
||||||
|
|
||||||
class EditorError(Exception):
|
class EditorError(Exception):
|
||||||
"""Unspecified error from the user's text editor.
|
"""Unspecified error from the user's text editor.
|
||||||
|
21
main.py
21
main.py
@ -129,8 +129,15 @@ class _Repo(object):
|
|||||||
file=sys.stderr)
|
file=sys.stderr)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
try:
|
||||||
copts, cargs = cmd.OptionParser.parse_args(argv)
|
copts, cargs = cmd.OptionParser.parse_args(argv)
|
||||||
copts = cmd.ReadEnvironmentOptions(copts)
|
copts = cmd.ReadEnvironmentOptions(copts)
|
||||||
|
except NoManifestException as e:
|
||||||
|
print('error: in `%s`: %s' % (' '.join([name] + argv), str(e)),
|
||||||
|
file=sys.stderr)
|
||||||
|
print('error: manifest missing or unreadable -- please run init',
|
||||||
|
file=sys.stderr)
|
||||||
|
return 1
|
||||||
|
|
||||||
if not gopts.no_pager and not isinstance(cmd, InteractiveCommand):
|
if not gopts.no_pager and not isinstance(cmd, InteractiveCommand):
|
||||||
config = cmd.manifest.globalConfig
|
config = cmd.manifest.globalConfig
|
||||||
@ -146,14 +153,12 @@ class _Repo(object):
|
|||||||
start = time.time()
|
start = time.time()
|
||||||
try:
|
try:
|
||||||
result = cmd.Execute(copts, cargs)
|
result = cmd.Execute(copts, cargs)
|
||||||
except DownloadError as e:
|
except (DownloadError, ManifestInvalidRevisionError,
|
||||||
print('error: %s' % str(e), file=sys.stderr)
|
NoManifestException) as e:
|
||||||
result = 1
|
print('error: in `%s`: %s' % (' '.join([name] + argv), str(e)),
|
||||||
except ManifestInvalidRevisionError as e:
|
file=sys.stderr)
|
||||||
print('error: %s' % str(e), file=sys.stderr)
|
if isinstance(e, NoManifestException):
|
||||||
result = 1
|
print('error: manifest missing or unreadable -- please run init',
|
||||||
except NoManifestException as e:
|
|
||||||
print('error: manifest required for this command -- please run init',
|
|
||||||
file=sys.stderr)
|
file=sys.stderr)
|
||||||
result = 1
|
result = 1
|
||||||
except NoSuchProjectError as e:
|
except NoSuchProjectError as e:
|
||||||
|
@ -2327,8 +2327,8 @@ class Project(object):
|
|||||||
path = os.path.join(self._project.worktree, '.git', HEAD)
|
path = os.path.join(self._project.worktree, '.git', HEAD)
|
||||||
try:
|
try:
|
||||||
fd = open(path, 'rb')
|
fd = open(path, 'rb')
|
||||||
except IOError:
|
except IOError as e:
|
||||||
raise NoManifestException(path)
|
raise NoManifestException(path, str(e))
|
||||||
try:
|
try:
|
||||||
line = fd.read()
|
line = fd.read()
|
||||||
finally:
|
finally:
|
||||||
|
Loading…
Reference in New Issue
Block a user