Better error messages for spack list -v.
This commit is contained in:
parent
57ef3b8a80
commit
8f37817ae1
1 changed files with 17 additions and 13 deletions
|
@ -1,5 +1,6 @@
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
from subprocess import CalledProcessError
|
||||||
|
|
||||||
import spack
|
import spack
|
||||||
import spack.packages as packages
|
import spack.packages as packages
|
||||||
|
@ -32,26 +33,29 @@ def list(parser, args):
|
||||||
elif args.version_package:
|
elif args.version_package:
|
||||||
pkg = packages.get(args.version_package)
|
pkg = packages.get(args.version_package)
|
||||||
|
|
||||||
|
# Run curl but grab the mime type from the http headers
|
||||||
try:
|
try:
|
||||||
# Run curl but grab the mime type from the http headers
|
|
||||||
listing = spack.curl('-s', '-L', pkg.list_url, return_output=True)
|
listing = spack.curl('-s', '-L', pkg.list_url, return_output=True)
|
||||||
url_regex = os.path.basename(url.wildcard_version(pkg.url))
|
except CalledProcessError:
|
||||||
strings = re.findall(url_regex, listing)
|
tty.die("Fetching %s failed." % pkg.list_url,
|
||||||
|
"'list -v' requires an internet connection.")
|
||||||
|
|
||||||
versions = []
|
url_regex = os.path.basename(url.wildcard_version(pkg.url))
|
||||||
wildcard = pkg.version.wildcard()
|
strings = re.findall(url_regex, listing)
|
||||||
for s in strings:
|
|
||||||
match = re.search(wildcard, s)
|
|
||||||
if match:
|
|
||||||
versions.append(ver(match.group(0)))
|
|
||||||
|
|
||||||
colify(str(v) for v in reversed(sorted(set(versions))))
|
versions = []
|
||||||
|
wildcard = pkg.version.wildcard()
|
||||||
|
for s in strings:
|
||||||
|
match = re.search(wildcard, s)
|
||||||
|
if match:
|
||||||
|
versions.append(ver(match.group(0)))
|
||||||
|
|
||||||
except:
|
if not versions:
|
||||||
tty.die("Listing versions for %s failed" % pkg.name,
|
tty.die("Found no versions for %s" % pkg.name,
|
||||||
"Listing versions is experimental. You may need to add the list_url",
|
"Listing versions is experimental. You may need to add the list_url",
|
||||||
"attribute to the package to tell Spack where to look for versions.")
|
"attribute to the package to tell Spack where to look for versions.")
|
||||||
raise
|
|
||||||
|
colify(str(v) for v in reversed(sorted(set(versions))))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
colify(packages.all_package_names())
|
colify(packages.all_package_names())
|
||||||
|
|
Loading…
Reference in a new issue