[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