mirror of
https://github.com/kennethreitz-archive/python-build.git
synced 2026-06-05 15:20:16 +00:00
72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
import os
|
|
import re
|
|
from pythonbrew.basecommand import Command
|
|
from pythonbrew.define import PYTHON_VERSION_URL, LATEST_VERSIONS_OF_PYTHON,\
|
|
PATH_PYTHONS
|
|
from pythonbrew.util import Package, get_current_python_path
|
|
from pythonbrew.log import logger
|
|
|
|
class ListCommand(Command):
|
|
name = "list"
|
|
usage = "%prog [VERSION]"
|
|
summary = "List the installed all pythons"
|
|
|
|
def __init__(self):
|
|
super(ListCommand, self).__init__()
|
|
self.parser.add_option(
|
|
'-a', '--all-versions',
|
|
dest='all_versions',
|
|
action='store_true',
|
|
default=False,
|
|
help='All versions of Python are visible'
|
|
)
|
|
self.parser.add_option(
|
|
'-k', '--known',
|
|
dest='known',
|
|
action='store_true',
|
|
default=False,
|
|
help='List the available install versions of Python'
|
|
)
|
|
|
|
def run_command(self, options, args):
|
|
if options.known:
|
|
self.available_install(options, args)
|
|
else:
|
|
self.installed(options, args)
|
|
|
|
def installed(self, options, args):
|
|
logger.info('# installed pythons')
|
|
cur = get_current_python_path()
|
|
for d in sorted(os.listdir(PATH_PYTHONS)):
|
|
if cur == os.path.join(PATH_PYTHONS, d, 'bin','python'):
|
|
logger.info('%s (*)' % d)
|
|
cur = None
|
|
else:
|
|
logger.info('%s' % d)
|
|
if cur:
|
|
logger.info('%s (*)' % cur)
|
|
|
|
def available_install(self, options, args):
|
|
logger.info('# available install pythons')
|
|
if args:
|
|
pkg = Package(args[0])
|
|
_re = re.compile(r"%s" % pkg.name)
|
|
pkgs = []
|
|
for pkgname in self._get_packages_name(options):
|
|
if _re.match(pkgname):
|
|
pkgs.append(pkgname)
|
|
if pkgs:
|
|
for pkgname in pkgs:
|
|
logger.info("%s" % pkgname)
|
|
else:
|
|
logger.info("Python version not found. `%s`" % pkg.name)
|
|
else:
|
|
for pkgname in self._get_packages_name(options):
|
|
logger.info("%s" % pkgname)
|
|
|
|
def _get_packages_name(self, options):
|
|
return ["Python-%s" % version for version in sorted(PYTHON_VERSION_URL.keys())
|
|
if(options.all_versions or (not options.all_versions and version in LATEST_VERSIONS_OF_PYTHON))]
|
|
|
|
ListCommand()
|