diff --git a/buildout.cfg b/buildout.cfg index 9041669..72f0e76 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -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 @@ -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 @@ -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 diff --git a/src/pypi_switcher/__init__.py b/src/pypi_switcher/__init__.py index 3bf244d..46c63ed 100644 --- a/src/pypi_switcher/__init__.py +++ b/src/pypi_switcher/__init__.py @@ -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() @@ -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 )