[Checkins] SVN: zope.repositorypolicy/trunk/s Some bug fixes, add ability to sent zope-tests compliant mail.

Christian Theune ct at gocept.com
Tue Mar 16 10:22:08 EDT 2010


Log message for revision 109985:
  Some bug fixes, add ability to sent zope-tests compliant mail.
  

Changed:
  U   zope.repositorypolicy/trunk/setup.py
  U   zope.repositorypolicy/trunk/src/zope/repositorypolicy/project.py
  U   zope.repositorypolicy/trunk/src/zope/repositorypolicy/repository.py

-=-
Modified: zope.repositorypolicy/trunk/setup.py
===================================================================
--- zope.repositorypolicy/trunk/setup.py	2010-03-16 13:15:19 UTC (rev 109984)
+++ zope.repositorypolicy/trunk/setup.py	2010-03-16 14:22:07 UTC (rev 109985)
@@ -22,6 +22,7 @@
     entry_points="""
         [console_scripts]
         zope-org-check-repos = zope.repositorypolicy.repository:main
+        zope-org-check-repos-mail = zope.repositorypolicy.repository:main_mail
         zope-org-check-project = zope.repositorypolicy.project:main
         zope-org-fix-project = zope.repositorypolicy.copyright:main
     """)

Modified: zope.repositorypolicy/trunk/src/zope/repositorypolicy/project.py
===================================================================
--- zope.repositorypolicy/trunk/src/zope/repositorypolicy/project.py	2010-03-16 13:15:19 UTC (rev 109984)
+++ zope.repositorypolicy/trunk/src/zope/repositorypolicy/project.py	2010-03-16 14:22:07 UTC (rev 109985)
@@ -64,23 +64,27 @@
 
     def check_egg_metadata(self):
         setup = os.path.join(self.working_dir, 'setup.py')
-        if os.path.isfile(setup):
-            s = subprocess.Popen([sys.executable, setup,
-                                  '--license', '--author'],
-                                 stdout=subprocess.PIPE)
-            s.wait()
-            metadata = s.stdout.readlines()
-            license = metadata[0].strip()
-            if license != self.license_name:
-                self.log.append(
-                    'setup.py: license not declared as "%s" (found: "%s")' %
-                    (self.license_name, license))
-            author = metadata[1].strip()
-            if author != self.copyright_holder:
-                self.log.append(
-                    'setup.py: author not declared as "%s" '
-                    '(found: "%s")' %
-                    (self.copyright_holder, author))
+        if not os.path.isfile(setup):
+            return
+        s = subprocess.Popen([sys.executable, setup,
+                              '--license', '--author'],
+                             stdout=subprocess.PIPE)
+        s.wait()
+        metadata = s.stdout.readlines()
+        if len(metadata) != 2:
+            self.log.append('setup.py: could not extract metadata')
+            return
+        license = metadata[0].strip()
+        if license != self.license_name:
+            self.log.append(
+                'setup.py: license not declared as "%s" (found: "%s")' %
+                (self.license_name, license))
+        author = metadata[1].strip()
+        if author != self.copyright_holder:
+            self.log.append(
+                'setup.py: author not declared as "%s" '
+                '(found: "%s")' %
+                (self.copyright_holder, author))
 
     def check_copyright(self):
         """Verifies the copyright assignment to the Zope Foundation

Modified: zope.repositorypolicy/trunk/src/zope/repositorypolicy/repository.py
===================================================================
--- zope.repositorypolicy/trunk/src/zope/repositorypolicy/repository.py	2010-03-16 13:15:19 UTC (rev 109984)
+++ zope.repositorypolicy/trunk/src/zope/repositorypolicy/repository.py	2010-03-16 14:22:07 UTC (rev 109985)
@@ -1,11 +1,14 @@
 # Copyright (c) 2010 Zope Foundation and Contributors
 # See also LICENSE.txt
 
+import datetime
 import os
 import re
 import shutil
+import smtplib
 import subvertpy.client
 import subvertpy.ra
+import sys
 import tempfile
 import zope.repositorypolicy.project
 
@@ -37,6 +40,11 @@
 
     def list_projects_branches(self):
         for project in self.repos.get_dir('/')[0].keys():
+            if not project.startswith('gocept.'):
+                continue
+            print project
+            if project == 'README.txt':
+                continue
             top = self.repos.get_dir(project)[0].keys()
             if 'trunk' in top:
                 yield project, 'trunk'
@@ -61,3 +69,32 @@
         result = 1
         print entry
     sys.exit(result)
+
+
+def main_mail():
+    smtp_host, sender_address, target_address, httpbase, logbase = sys.argv[1:]
+
+    stamp = datetime.datetime.now().isoformat()
+    logname =  'report-%s.txt' % stamp
+    log = open(os.path.join(logbase, logname), 'w')
+
+    checker = Checker()
+    errors = 0
+    for entry in checker.run():
+        errors += 1
+        log.write(entry+'\n')
+    log.close()
+
+    if errors:
+        subject = 'FAILURE: Repository policy check found %s errors' % errors
+    else:
+        subject = 'OK: Repository policy check found no errors'
+
+    body = ('The log can be found at %s/%s\r\n\r\n-- \r\n'
+            'This message was generated automatically.' % (httpbase, logname))
+
+    mailserver = smtplib.SMTP(smtp_host)
+    msg = ('From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s' %
+            (sender_address, target_address, subject, body))
+    mailserver.sendmail(sender_address, [target_address], msg)
+    mailserver.quit()



More information about the checkins mailing list