import os
from ConfigParser import ConfigParser
from setuptools.command.easy_install import PackageIndex
from urllib import urlopen

here = os.path.abspath(os.path.dirname(__file__))

#GROK_VERSION = '0.10.1' # track the underlying grok release for clarity.
GROK_VERSION = '0.11' # track the underlying grok release for clarity.

# Convert Grok's "frozen set", which is in buildout.cfg format, into
# a list of setuptools requirements.
grok_kgs = 'grok-%s.cfg' % GROK_VERSION
grok_kgs_here = os.path.join(here, grok_kgs)

if not os.path.exists(grok_kgs_here):
    text = urlopen('http://grok.zope.org/releaseinfo/%s' % grok_kgs).read()
    f = open(grok_kgs_here, 'w')
    f.write(text)
    f.close()

grok_cfg = ConfigParser()
grok_cfg.read(grok_kgs_here)
grok_requires = []
for project, version in grok_cfg.items('versions'):
    grok_requires.append('%s==%s' % (project, version))

tmpdir = 'grok_src'
if not os.path.exists(tmpdir):
    os.mkdir(tmpdir)

pypi = PackageIndex()
pypi.add_find_links(['http://download.zope.org/distribution'])
from pkg_resources import Requirement

packs = os.listdir(tmpdir)

for req_str in grok_requires:
    req = Requirement.parse(req_str)
    print req
    already = False
    for pack in packs:
        if pack.lower().startswith(req.project_name):
            already = True

    if already:
        continue
    dist = pypi.fetch_distribution(
        req, tmpdir, force_scan=True, source=True, develop_ok=False
        )
    if dist is None:
        print 'trying .egg release'
        dist = pypi.fetch_distribution(
            req, tmpdir, force_scan=True, source=False, develop_ok=False
            )
        if dist is None:
            print 'failed to download requirement ' % req
        
        
    
