1import os
2import re
3try:
4    import ConfigParser
5except:
6    import configparser as ConfigParser
7
8# pythonbrew version
9VERSION = "1.3"
10
11# pythonbrew installer root path
12INSTALLER_ROOT = os.path.dirname(os.path.abspath(__file__))
13
14# Root
15# pythonbrew root path
16ROOT = os.environ.get("PYTHONBREW_ROOT")
17if not ROOT:
18    ROOT = os.path.join(os.environ["HOME"],".pythonbrew")
19
20# directories
21PATH_PYTHONS = os.path.join(ROOT,"pythons")
22PATH_BUILD = os.path.join(ROOT,"build")
23PATH_DISTS = os.path.join(ROOT,"dists")
24PATH_ETC = os.path.join(ROOT,"etc")
25PATH_BIN = os.path.join(ROOT,"bin")
26PATH_LOG = os.path.join(ROOT,"log")
27PATH_VENVS = os.path.join(ROOT, "venvs")
28PATH_SCRIPTS = os.path.join(ROOT,"scripts")
29PATH_SCRIPTS_PYTHONBREW = os.path.join(PATH_SCRIPTS,"pythonbrew")
30PATH_SCRIPTS_PYTHONBREW_COMMANDS = os.path.join(PATH_SCRIPTS_PYTHONBREW,"commands")
31PATH_SCRIPTS_PYTHONBREW_INSTALLER = os.path.join(PATH_SCRIPTS_PYTHONBREW,"installer")
32PATH_PATCHES = os.path.join(ROOT,"patches")
33PATH_PATCHES_ALL = os.path.join(PATH_PATCHES,"all")
34PATH_PATCHES_MACOSX = os.path.join(PATH_PATCHES,"macosx")
35PATH_PATCHES_MACOSX_PYTHON27 = os.path.join(PATH_PATCHES_MACOSX,"python27")
36PATH_PATCHES_MACOSX_PYTHON26 = os.path.join(PATH_PATCHES_MACOSX,"python26")
37PATH_PATCHES_MACOSX_PYTHON25 = os.path.join(PATH_PATCHES_MACOSX,"python25")
38PATH_PATCHES_MACOSX_PYTHON24 = os.path.join(PATH_PATCHES_MACOSX,"python24")
39
40# files
41PATH_BIN_PYTHONBREW = os.path.join(PATH_BIN,'pythonbrew')
42PATH_ETC_CONFIG = os.path.join(PATH_ETC,'config.cfg')
43
44# Home
45# pythonbrew home path
46PATH_HOME = os.environ.get('PYTHONBREW_HOME')
47if not PATH_HOME:
48    PATH_HOME = os.path.join(os.environ["HOME"],".pythonbrew")
49
50# directories
51PATH_HOME_ETC = os.path.join(PATH_HOME, 'etc')
52
53# files
54PATH_HOME_ETC_VENV = os.path.join(PATH_HOME_ETC, 'venv.run')
55PATH_HOME_ETC_CURRENT = os.path.join(PATH_HOME_ETC,'current')
56PATH_HOME_ETC_TEMP = os.path.join(PATH_HOME_ETC,'temp')
57
58# read config.cfg
59config = ConfigParser.SafeConfigParser()
60config.read([PATH_ETC_CONFIG, os.path.join(INSTALLER_ROOT,'etc','config.cfg')])
61def _get_or_default(section, option, default=''):
62    try:
63        return config.get(section, option)
64    except:
65        return default
66
67# setuptools download
68DISTRIBUTE_SETUP_DLSITE = _get_or_default('distribute', 'url')
69
70# buildout bootstrap download
71BOOTSTRAP_DLSITE = _get_or_default('bootstrap', 'url')
72
73# virtualenv download
74VIRTUALENV_DLSITE = _get_or_default('virtualenv', 'url')
75
76# pythonbrew download
77PYTHONBREW_UPDATE_URL_MASTER = _get_or_default('pythonbrew', 'master')
78PYTHONBREW_UPDATE_URL_DEVELOP = _get_or_default('pythonbrew', 'develop')
79PYTHONBREW_UPDATE_URL_PYPI = _get_or_default('pythonbrew', 'pypi')
80PYTHONBREW_UPDATE_URL_CONFIG = _get_or_default('pythonbrew', 'config')
81
82# stable version text
83PYTHONBREW_STABLE_VERSION_URL = _get_or_default('pythonbrew', 'stable-version')
84
85# python download
86LATEST_VERSIONS_OF_PYTHON = []
87PYTHON_VERSION_URL = {}
88PYTHON_VERSION_URL["1.5.2"] = _get_or_default('Python-1.5.2', 'url')
89PYTHON_VERSION_URL["1.6.1"] = _get_or_default('Python-1.6.1', 'url')
90for section in sorted(config.sections()):
91    m = re.search("^Python-(.*)$", section)
92    if m:
93        version = m.group(1)
94        PYTHON_VERSION_URL[version] = config.get(section, 'url')
95        if config.has_option(section, 'latest') and config.getboolean(section, 'latest'):
96            LATEST_VERSIONS_OF_PYTHON.append(version)
97