diff --git a/pythonbrew/commands/list.py b/pythonbrew/commands/list.py index 8608cfc..08ee2c9 100644 --- a/pythonbrew/commands/list.py +++ b/pythonbrew/commands/list.py @@ -1,6 +1,6 @@ import re from pythonbrew.basecommand import Command -from pythonbrew.define import PYTHON_PACKAGE_URL +from pythonbrew.define import PYTHON_PACKAGE_URL, LATEST_VERSIONS_OF_PYTHON from pythonbrew.util import Package from pythonbrew.log import logger @@ -8,27 +8,36 @@ class ListCommand(Command): name = "list" usage = "%prog [VERSION]" summary = "List the available install version of python" + + def __init__(self): + super(ListCommand, self).__init__() + self.parser.add_option( + "--all-versions", + dest="all_versions", + action="store_true", + default=False, + help="All versions of Python are visible." + ) def run_command(self, options, args): if args: pkg = Package(args[0]) _re = re.compile(r"%s" % pkg.name) pkgs = [] - for pkgname in self._get_packages_name(): + for pkgname in self._get_packages_name(options): if _re.match(pkgname): pkgs.append(pkgname) if pkgs: - logger.info("Pythons:") for pkgname in pkgs: - logger.info(" %s" % pkgname) + logger.info("%s" % pkgname) else: print "Package not found. `%s`" % pkg.name else: - logger.info("Pythons:") - for pkgname in self._get_packages_name(): - logger.info(" %s" % pkgname) + for pkgname in self._get_packages_name(options): + logger.info("%s" % pkgname) - def _get_packages_name(self): - return ["Python-%s" % version for version in sorted(PYTHON_PACKAGE_URL.keys())] + def _get_packages_name(self, options): + return ["Python-%s" % version for version in sorted(PYTHON_PACKAGE_URL.keys()) + if(options.all_versions or (not options.all_versions and version in LATEST_VERSIONS_OF_PYTHON))] ListCommand() diff --git a/pythonbrew/define.py b/pythonbrew/define.py index 1f60730..d7e4855 100644 --- a/pythonbrew/define.py +++ b/pythonbrew/define.py @@ -34,6 +34,7 @@ DISTRIBUTE_SETUP_DLSITE = "http://python-distribute.org/distribute_setup.py" PYTHONBREW_UPDATE_URL = { "head": "http://github.com/utahta/pythonbrew/tarball/master", "0.5": "https://github.com/utahta/pythonbrew/tarball/0.5", + "0.6": "https://github.com/utahta/pythonbrew/tarball/0.6", } PYTHONBREW_DIRNAME = "utahta-pythonbrew" @@ -60,3 +61,8 @@ PYTHON_PACKAGE_URL["3.2a1"] = "http://www.python.org/ftp/python/3.2/Python-3.2a1 PYTHON_PACKAGE_URL["3.2a2"] = "http://www.python.org/ftp/python/3.2/Python-3.2a2.tgz" PYTHON_PACKAGE_URL["3.2a3"] = "http://www.python.org/ftp/python/3.2/Python-3.2a3.tgz" +LATEST_VERSIONS_OF_PYTHON = ['1.5.2', '1.6.1', + '2.0.1', '2.1.3', '2.2.3', '2.3.7', '2.4.6', '2.5.5', '2.6.6', '2.7', + '3.0.1', '3.1.2', '3.2a3'] + + diff --git a/pythonbrew/downloader.py b/pythonbrew/downloader.py index ce41269..f049aee 100644 --- a/pythonbrew/downloader.py +++ b/pythonbrew/downloader.py @@ -9,12 +9,12 @@ def get_response_from_url(url): try: resp = urllib2.urlopen(url) except urllib2.HTTPError, e: - logger.error("HTTP error %s while getting %s" % (e.code)) - raise + logger.error("HTTP error %s while getting %s" % (e.code, url)) + sys.exit(1) except IOError, e: # Typically an FTP error - logger.error("Error %s while getting %s" % (e)) - raise + logger.error("Error %s while getting %s" % (e, url)) + sys.exit(1) return resp class Downloader(object):