mirror of
https://github.com/kennethreitz-archive/python-build.git
synced 2026-06-05 23:30:18 +00:00
42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
import os
|
|
import sys
|
|
import re
|
|
from pythonbrew.basecommand import Command
|
|
from pythonbrew.define import PATH_PYTHONS, PATH_BIN
|
|
from pythonbrew.util import off, symlink, Package
|
|
from pythonbrew.log import logger
|
|
|
|
class SwitchCommand(Command):
|
|
name = "switch"
|
|
usage = "%prog VERSION"
|
|
summary = "Switch to the given version"
|
|
|
|
def run_command(self, options, args):
|
|
if not args:
|
|
logger.error("Unrecognized command line argument: argument not found.")
|
|
sys.exit(1)
|
|
pkg = Package(args[0])
|
|
pkgname = pkg.name
|
|
pkgdir = "%s/%s" % (PATH_PYTHONS, pkgname)
|
|
if not os.path.isdir(pkgdir):
|
|
logger.error("`%s` is not installed." % pkgname)
|
|
sys.exit(1)
|
|
self._switch_dir(pkgdir)
|
|
logger.info("Switched to %s" % pkgname)
|
|
|
|
def _switch_dir(self, pkgdir):
|
|
off()
|
|
symlink(pkgdir, "%s/current" % PATH_PYTHONS)
|
|
for root, dirs, files in os.walk("%s/current/bin/" % PATH_PYTHONS):
|
|
for f in files:
|
|
symlink("%s%s" % (root, f), "%s/%s" % (PATH_BIN, f))
|
|
break
|
|
# I want better code
|
|
if not os.path.isfile("%s/python" % PATH_BIN):
|
|
if os.path.isfile("%s/python3" % PATH_BIN):
|
|
symlink(os.path.realpath("%s/python3" % PATH_BIN), "%s/python" % PATH_BIN)
|
|
elif os.path.isfile("%s/python3.0" % PATH_BIN):
|
|
symlink(os.path.realpath("%s/python3.0" % PATH_BIN), "%s/python" % PATH_BIN)
|
|
|
|
SwitchCommand()
|