[Checkins] SVN: zopetoolkit/trunk/checknew. Added checknew script written initially by Hanno for Plone trunk (I know Hanno, we should make a recipe :)

Vincent Fretin vincent.fretin at gmail.com
Sat Feb 6 12:45:53 EST 2010


Log message for revision 108843:
  Added checknew script written initially by Hanno for Plone trunk (I know Hanno, we should make a recipe :)

Changed:
  A   zopetoolkit/trunk/checknew.cfg
  A   zopetoolkit/trunk/checknew.py.in

-=-
Added: zopetoolkit/trunk/checknew.cfg
===================================================================
--- zopetoolkit/trunk/checknew.cfg	                        (rev 0)
+++ zopetoolkit/trunk/checknew.cfg	2010-02-06 17:45:52 UTC (rev 108843)
@@ -0,0 +1,21 @@
+# to use it:
+# bin/buildout -c checknew.cfg
+# bin/python checknew.py
+
+[buildout]
+extends = buildout.cfg
+parts += check interpreter
+
+[check]
+recipe = collective.recipe.template
+input = checknew.py.in
+output = checknew.py
+eggs = ${ztk:packages} ${zopeapp:packages}
+
+[interpreter]
+recipe = zc.recipe.egg
+eggs = ${ztk:packages} ${zopeapp:packages}
+interpreter = python
+
+[versions]
+collective.recipe.template = 1.4

Added: zopetoolkit/trunk/checknew.py.in
===================================================================
--- zopetoolkit/trunk/checknew.py.in	                        (rev 0)
+++ zopetoolkit/trunk/checknew.py.in	2010-02-06 17:45:52 UTC (rev 108843)
@@ -0,0 +1,58 @@
+import sys
+
+
+def main():
+    import pkg_resources
+    from pkg_resources import parse_requirements
+    from setuptools.package_index import PackageIndex
+
+    import socket
+    print 'Setting socket time out to %d seconds' % 3
+    socket.setdefaulttimeout(3)
+
+    eggs = """${eggs}"""
+    ws = pkg_resources.require(eggs.split())
+    pi = PackageIndex()
+
+    names = []
+    installed = []
+    for dist in ws:
+        name = dist.project_name
+        if name not in names:
+            names.append(name)
+            installed.append(dict(
+                dist=dist,
+                name=name,
+                req=parse_requirements(name).next(),
+                ))
+
+    def _key(value):
+        return value['name']
+    installed.sort(key=_key)
+
+    upgrade = False
+    for info in installed:
+        print("Checking for new version of %s." % info['name'])
+        new_dist = pi.obtain(info['req'])
+        if new_dist.parsed_version > info['dist'].parsed_version:
+            upgrade = True
+            print()
+            print("Newer version for %s found. Installed: %s - found: %s" %
+                (info['name'], info['dist'].version, new_dist.version))
+            print("Newer version available at: %s" % new_dist.location)
+            print()
+
+    if not upgrade:
+        print("No updates have been found. All packages use current versions.")
+
+
+def help():
+    print("Use this script via ./bin/instance-py checknew.py")
+
+
+if __name__ == '__main__':
+    args = sys.argv[1:]
+    if '--help' in args:
+        help()
+    else:
+        main()



More information about the checkins mailing list