Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 1 addition & 24 deletions buildout.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ homepage = http://github.com/grzn/pypi_switcher

[isolated-python]
recipe = infi.recipe.python
version = v2.7.2.5
version = v2.7.8.5

[setup.py]
recipe = infi.recipe.template.version
Expand All @@ -35,17 +35,6 @@ output = setup.py
[__version__.py]
recipe = infi.recipe.template.version
output = ${project:version_file}
input = inline:
__version__ = "${infi.recipe.template.version:version}"
__git_commiter_name__ = "${infi.recipe.template.version:author}"
__git_commiter_email__ = "${infi.recipe.template.version:author_email}"
__git_branch__ = ${infi.recipe.template.version:git_local_branch}
__git_remote_tracking_branch__ = ${infi.recipe.template.version:git_remote_tracking_branch}
__git_remote_url__ = ${infi.recipe.template.version:git_remote_url}
__git_head_hash__ = ${infi.recipe.template.version:head_hash}
__git_head_subject__ = ${infi.recipe.template.version:head_subject}
__git_head_message__ = ${infi.recipe.template.version:head_message}
__git_dirty_diff__ = ${infi.recipe.template.version:dirty_diff}

[development-scripts]
dependent-scripts = true
Expand All @@ -55,22 +44,10 @@ eggs = ${project:name}
nose
mock
coverage
pylint
infi.unittest
infi.traceback
interpreter = python

[eclipse]
recipe = rbco.recipe.pyeclipse
project-name = ${project:name}
project-directory = ${buildout:directory}
python-version = 2.7
source-resources = ${buildout:directory}/src

[pydev]
recipe = pb.recipes.pydev
eggs = ${development-scripts:eggs}

[pack]
recipe = infi.recipe.application_packager

Expand Down
65 changes: 58 additions & 7 deletions src/pypi_switcher/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,50 @@
from configparser import ConfigParser


def pars_args():
"""return a valid url or exits"""
import argparse
parser = argparse.ArgumentParser(description='configure and apply pipi server on your local workstations', \
usage='usage: set_index_url [-h] --show / url')
parser.add_argument('url', help='set url to be your system pypi default server', nargs='?')
parser.add_argument('--show', help='show index url in the relevant config files', action='store_true')
options = parser.parse_args()
if options.show:
show_index_url()
sys.exit(0)
else:
if options.url:
return options.url
else:
parser.print_help()
print "ERROR:need to specify at list one argument !"
sys.exit(2)


def verify_url(url):
from urllib import urlopen
try:
urlopen(url)
except IOError:
print '{} is not a valid url'.format(url)
sys.exit(2)

def show_index_url():
from re import search
files_list = [item[0] for item in iter_tuples()]
for filename in files_list:
filename = os.path.expanduser(filename)
if os.path.isfile(filename):
print filename
else:
print "{} doesn't exists".format(filename)
continue
with open(filename, "r") as fd:
for line in fd.xreadlines():
if search("index", line):
print line


@contextmanager
def open_configparser_file(filepath, write_on_exit=False):
parser = ConfigParser()
Expand All @@ -33,12 +77,19 @@ def set_index_url_in_file(filepath, section_name, key, index_url):
pydistutils.set(section_name, key, index_url)


def set_index_url(argv=sys.argv[1:]):
[index_url] = argv
def iter_tuples():
if os.name == "nt":
set_index_url_in_file("~/pydistutils.cfg", "easy_install", "index-url", index_url)
set_index_url_in_file("~/pip/pip.ini", "global", "index-url", index_url)
yield ("~/pydistutils.cfg", "easy_install", "index-url")
yield ("~/pip/pip.ini", "global", "index-url")
else:
set_index_url_in_file("~/.pydistutils.cfg", "easy_install", "index-url", index_url)
set_index_url_in_file("~/.pip/pip.conf", "global", "index-url", index_url)
set_index_url_in_file("~/.buildout/default.cfg", "buildout", "index", index_url)
yield ("~/.pydistutils.cfg", "easy_install", "index-url")
yield ("~/.pip/pip.conf", "global", "index-url")
yield("~/.buildout/default.cfg", "buildout", "index")


def set_index_url():
index_url = pars_args()
verify_url(index_url)
for item in iter_tuples():
filename, section_name, key = item
set_index_url_in_file( filename, section_name, key, index_url )