From 8f37817ae161d5ab75381a130d6989b5bc4b62e8 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 17 May 2013 16:56:00 -0700 Subject: Better error messages for spack list -v. --- lib/spack/spack/cmd/list.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/lib/spack/spack/cmd/list.py b/lib/spack/spack/cmd/list.py index c6f9e4d951..49ba7a113d 100644 --- a/lib/spack/spack/cmd/list.py +++ b/lib/spack/spack/cmd/list.py @@ -1,5 +1,6 @@ import os import re +from subprocess import CalledProcessError import spack import spack.packages as packages @@ -32,26 +33,29 @@ def list(parser, args): elif args.version_package: pkg = packages.get(args.version_package) + # Run curl but grab the mime type from the http headers try: - # Run curl but grab the mime type from the http headers listing = spack.curl('-s', '-L', pkg.list_url, return_output=True) - url_regex = os.path.basename(url.wildcard_version(pkg.url)) - strings = re.findall(url_regex, listing) - - versions = [] - wildcard = pkg.version.wildcard() - 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)))) - - except: - tty.die("Listing versions for %s failed" % pkg.name, + 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) + + versions = [] + wildcard = pkg.version.wildcard() + for s in strings: + match = re.search(wildcard, s) + if match: + versions.append(ver(match.group(0))) + + 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()) -- cgit v1.2.3-60-g2f50