Suppress tracebacks for "expected" errors
We shouldn't crash when network communication fails, or when a subprocess fails. The traceback is unsightly, and causes bug reports to be files. Let's just print the error. $ PYTHONPATH=$HOME/python/rust2rpm python -m rust2rpm ./asdfasdf.asdf error: the manifest-path must be a path to a Cargo.toml file Subcommand failed with code 101: cargo read-manifest --manifest-path=./asdfasdf.asdf $ PYTHONPATH=$HOME/python/rust2rpm python -m rust2rpm asdfasdf Failed to download metadata: 404 Client Error: Not Found for url: https://crates.io/api/v1/crates/asdfasdf/versions Fixes #145. (This does the relatively easy thing of printing the original message. In principle we could try to figure out what the exact error was and print uniform error messages. But that'd be quite a lot of work, and fairly brittle, because we'd need to cover all possible errors. So let's do this thing which should be good enough in 95% of cases.)
This commit is contained in:
parent
057dd98350
commit
afbee03f26
1 changed files with 8 additions and 2 deletions
|
@ -347,7 +347,7 @@ def main():
|
|||
parser.error("required crate/path argument missing")
|
||||
|
||||
crate, diff, metadata, doc_files, license_files = make_diff_metadata(
|
||||
args.crate, args.version, patch=args.patch, store=args.store_crate)
|
||||
args.crate, args.version, patch=args.patch, store=args.store_crate)
|
||||
|
||||
JINJA_ENV.globals["normalize_deps"] = normalize_deps
|
||||
JINJA_ENV.globals["to_list"] = to_list
|
||||
|
@ -468,4 +468,10 @@ def main():
|
|||
fobj.writelines(diff)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
try:
|
||||
main()
|
||||
except requests.exceptions.HTTPError as e:
|
||||
sys.exit(f'Failed to download metadata: {e}')
|
||||
except subprocess.CalledProcessError as e:
|
||||
cmd = shlex.join(e.cmd)
|
||||
sys.exit(f'Subcommand failed with code {e.returncode}: {cmd}')
|
||||
|
|
Loading…
Reference in a new issue