[Checkins] SVN: zc.mirrorcheeseshopslashsimple/trunk/ * Created a simple script to generate a buildout.cfg file from the

Stephan Richter srichter at cosmos.phy.tufts.edu
Fri Oct 5 17:34:42 EDT 2007


Log message for revision 80669:
  * Created a simple script to generate a buildout.cfg file from the 
    ``controlled-pacakges.cfg``.
  
  * Provided a sample ``controlled-packages.cfg`` file.
  
  * Fixed a statement modified for testing.
  
  

Changed:
  _U  zc.mirrorcheeseshopslashsimple/trunk/
  U   zc.mirrorcheeseshopslashsimple/trunk/setup.py
  _U  zc.mirrorcheeseshopslashsimple/trunk/src/
  A   zc.mirrorcheeseshopslashsimple/trunk/src/zc/buildout.cfg.in
  A   zc.mirrorcheeseshopslashsimple/trunk/src/zc/controlled-packages.cfg.sample
  U   zc.mirrorcheeseshopslashsimple/trunk/src/zc/mirrorcheeseshopslashsimple.py

-=-

Property changes on: zc.mirrorcheeseshopslashsimple/trunk
___________________________________________________________________
Name: svn:ignore
   + develop-eggs
bin
parts
mirror
.installed.cfg


Modified: zc.mirrorcheeseshopslashsimple/trunk/setup.py
===================================================================
--- zc.mirrorcheeseshopslashsimple/trunk/setup.py	2007-10-05 20:46:41 UTC (rev 80668)
+++ zc.mirrorcheeseshopslashsimple/trunk/setup.py	2007-10-05 21:34:41 UTC (rev 80669)
@@ -7,5 +7,6 @@
     install_requires = ['zc.lockfile'],
     entry_points = dict(console_scripts=[
         'update-simple-mirror = zc.mirrorcheeseshopslashsimple:update',
+        'generate-buildout = zc.mirrorcheeseshopslashsimple:generatebuildout',
         ])
     )


Property changes on: zc.mirrorcheeseshopslashsimple/trunk/src
___________________________________________________________________
Name: svn:ignore
   + zc.mirrorcheeseshopslashsimple.egg-info


Added: zc.mirrorcheeseshopslashsimple/trunk/src/zc/buildout.cfg.in
===================================================================
--- zc.mirrorcheeseshopslashsimple/trunk/src/zc/buildout.cfg.in	                        (rev 0)
+++ zc.mirrorcheeseshopslashsimple/trunk/src/zc/buildout.cfg.in	2007-10-05 21:34:41 UTC (rev 80669)
@@ -0,0 +1,11 @@
+[buildout]
+parts = test
+index = %(index_url)s
+versions = versions
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = %(tested-packages)s
+
+[versions]
+%(versions)s

Added: zc.mirrorcheeseshopslashsimple/trunk/src/zc/controlled-packages.cfg.sample
===================================================================
--- zc.mirrorcheeseshopslashsimple/trunk/src/zc/controlled-packages.cfg.sample	                        (rev 0)
+++ zc.mirrorcheeseshopslashsimple/trunk/src/zc/controlled-packages.cfg.sample	2007-10-05 21:34:41 UTC (rev 80669)
@@ -0,0 +1,14 @@
+[DEFAULT]
+tested=true
+
+[zope.component]
+versions = 3.4.0
+
+[zope.interface]
+versions = 3.4.0
+           3.4.1
+           3.4.2
+
+[zope.event]
+versions = 3.5.0
+tested=false

Modified: zc.mirrorcheeseshopslashsimple/trunk/src/zc/mirrorcheeseshopslashsimple.py
===================================================================
--- zc.mirrorcheeseshopslashsimple/trunk/src/zc/mirrorcheeseshopslashsimple.py	2007-10-05 20:46:41 UTC (rev 80668)
+++ zc.mirrorcheeseshopslashsimple/trunk/src/zc/mirrorcheeseshopslashsimple.py	2007-10-05 21:34:41 UTC (rev 80669)
@@ -19,10 +19,20 @@
 lock_file_path = 'pypy-poll-access.lock'
 poll_time_path = 'pypy-poll-timestamp'
 controlled_packages_path = 'controlled-packages.cfg'
+index_base_url = 'http://download.zope.org/'
 
-repos = None
 simple = "http://cheeseshop.python.org/simple/"
 
+def get_dest_dir(args=None):
+    if args is None:
+        args = sys.argv[1:]
+
+    if len(args) != 1:
+        print "Usage: update dest"
+        sys.exit(1)
+
+    return os.path.abspath(args[0])
+
 def get_page(dest, package, force=False):
     try:
         pdest = os.path.join(dest, package)
@@ -85,15 +95,9 @@
     os.rename(dest+'t', dest)
 
 def update(args=None):
-    if args is None:
-        args = sys.argv[1:]
 
-    if len(args) != 1:
-        print "Usage: update dest"
-        sys.exit(1)
+    dest = get_dest_dir(args)
 
-    dest = args[0]
-
     lock = zc.lockfile.LockFile(os.path.join(dest, lock_file_path))
     try:
         ptp = os.path.join(dest, poll_time_path)
@@ -107,7 +111,7 @@
         packages = sorted((
             (timestamp, name)
             for (name, version, timestamp, action)
-            in server.changelog(last-3600*24)
+            in server.changelog(last)
             ))
         packages = dict((
             (name, timestamp)
@@ -153,3 +157,34 @@
 
     finally:
         lock.close()
+
+def generatebuildout(args=None):
+    dest = get_dest_dir(args)
+    # Create the link to the package index.
+    index_url = index_base_url + os.path.split(dest)[-1]
+
+    # Extract a list of all packages that need to be tested and record the
+    # version to be tested. By default this version is the last available one.
+    cpath = os.path.join(dest, controlled_packages_path)
+    config = ConfigParser.RawConfigParser()
+    config.read(cpath)
+    packages = []
+    for section in config.sections():
+        packages.append((
+            section,
+            config.get(section, 'versions').split()[-1],
+            config.getboolean(section, 'tested')
+            ))
+
+    # Create the data dictionary
+    data = {
+        'index_url': index_url,
+        'tested-packages': '\n    '.join([p for (p, v, t) in packages if t]),
+        'versions': '\n'.join([p + ' = ' + v for (p, v, t) in packages])
+        }
+
+    # Write a new buildout.cfg file
+    buildoutcfg_path = os.path.join(dest, 'buildout.cfg')
+    templ_path = os.path.join(os.path.dirname(__file__), 'buildout.cfg.in')
+    open(buildoutcfg_path, 'w').write(
+        open(templ_path, 'r').read() %data)



More information about the Checkins mailing list