Better error messages for spack list -v.

This commit is contained in:
Todd Gamblin 2013-05-17 16:56:00 -07:00
parent 57ef3b8a80
commit 8f37817ae1

View file

@ -1,5 +1,6 @@
import os
import re
from subprocess import CalledProcessError
import spack
import spack.packages as packages
@ -32,9 +33,13 @@ def list(parser, args):
elif args.version_package:
pkg = packages.get(args.version_package)
try:
# Run curl but grab the mime type from the http headers
try:
listing = spack.curl('-s', '-L', pkg.list_url, return_output=True)
except CalledProcessError:
tty.die("Fetching %s failed." % pkg.list_url,
"'list -v' requires an internet connection.")
url_regex = os.path.basename(url.wildcard_version(pkg.url))
strings = re.findall(url_regex, listing)
@ -45,13 +50,12 @@ def list(parser, args):
if match:
versions.append(ver(match.group(0)))
colify(str(v) for v in reversed(sorted(set(versions))))
except:
tty.die("Listing versions for %s failed" % pkg.name,
if not versions:
tty.die("Found no versions for %s" % pkg.name,
"Listing versions is experimental. You may need to add the list_url",
"attribute to the package to tell Spack where to look for versions.")
raise
colify(str(v) for v in reversed(sorted(set(versions))))
else:
colify(packages.all_package_names())