[packages/pldnotify/py] add support for checking multiple checkers

glen glen at pld-linux.org
Wed Dec 9 20:40:14 CET 2015


commit 86e81e8c644a7e467444433f81d24469c2425393
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Wed Dec 9 21:39:31 2015 +0200

    add support for checking multiple checkers

 pldnotify.py | 66 +++++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 43 insertions(+), 23 deletions(-)
---
diff --git a/pldnotify.py b/pldnotify.py
index e4b843f..3eb5a97 100755
--- a/pldnotify.py
+++ b/pldnotify.py
@@ -51,9 +51,43 @@ i.e Anitya (release-monitoring.org), NPM (nodejs), etc ...
 """
 class Checker:
     distro = 'pld-linux'
+    checkers = ['anitya']
 
-    def __init__(self, name):
-        self.name = name
+    def __init__(self, specfile):
+        self.spec = RPMSpec(specfile)
+
+        try:
+            macros = self.spec.macros()
+        except rpm.error, e:
+            raise ValueError, e
+
+        self.name = macros['name']
+        self.version = macros['version']
+
+        if self.name != specfile[0:-5]:
+            print "WARNING: name mismatch: %s!=%s" % (self.name, name)
+
+        print "%s: %s" % (self.name, self.version)
+
+    def find_recent(self):
+        current = None
+
+        for fn in self.checkers:
+            try:
+                v = getattr(self, fn)()
+            except ValueError, e:
+                print "WARNING: skipping %s: %s" % (fn, e)
+                continue
+
+            print "DEBUG: %s: %s" % (fn, v)
+
+            if self.spec.compare(v) <= 0:
+                print "DEBUG: skipping %s (is not newer)" % (v)
+                continue
+
+            current = v
+
+        return current
 
     """
         Check for update from release-monitoring.org (Anitya).
@@ -68,26 +102,6 @@ class Checker:
 
         return data['version']
 
-def check_package(package):
-    s = RPMSpec(package)
-    macros = s.macros()
-    name = macros['name']
-    version = macros['version']
-    print "%s: %s" % (name, version)
-    check = Checker(name)
-    ver = check.anitya()
-    print "Anitya: %s" % ver
-
-    cmp = s.compare(ver)
-    if cmp > 0:
-        print "NEWER"
-    elif cmp == 0:
-        print "same :("
-    elif cmp < 0:
-        print "OLDER!"
-    else:
-        raise ValueError, "Invalid value: %r" % cmp
-
 def main():
     parser = argparse.ArgumentParser(description='PLD-Notify: project to monitor upstream releases.')
     parser.add_argument('-d', '--debug',
@@ -98,7 +112,13 @@ def main():
         help='Package to check')
 
     args = parser.parse_args()
-    check_package(args.package)
+
+    checker = Checker(args.package)
+    ver = checker.find_recent()
+    if ver:
+        print "Found an update: %s" % ver
+    else:
+        print "No update for %s" % args.package
 
 if __name__ == '__main__':
     main()
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/pldnotify.git/commitdiff/86e81e8c644a7e467444433f81d24469c2425393



More information about the pld-cvs-commit mailing list