Rev 5449: Parse entries, extract bugs fron the entries (1105 bugs seen). in file:///home/vila/src/bzr/experimental/fixed-in/

Vincent Ladeuil v.ladeuil+lp at free.fr
Mon Sep 27 23:20:36 BST 2010


At file:///home/vila/src/bzr/experimental/fixed-in/

------------------------------------------------------------
revno: 5449
revision-id: v.ladeuil+lp at free.fr-20100927222036-ye9qqlpq4bc4a542
parent: v.ladeuil+lp at free.fr-20100927214940-l0byjb3qjemkfrcd
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: fixed-in
timestamp: Tue 2010-09-28 00:20:36 +0200
message:
  Parse entries, extract bugs fron the entries (1105 bugs seen).
-------------- next part --------------
=== modified file 'tools/fixed-in.py'
--- a/tools/fixed-in.py	2010-09-27 21:49:40 +0000
+++ b/tools/fixed-in.py	2010-09-27 22:20:36 +0000
@@ -20,6 +20,7 @@
 
     release_re = re.compile("bzr[ -]")
     release_prefix_length = len('bzr ')
+    bug_pattern = re.compile("(#(?:[0-9]+)(?:,\s)?)+")
 
     def __init__(self, news):
         self.news = news
@@ -52,6 +53,22 @@
             return True
         return False
 
+    def add_line_to_entry(self):
+        if self.lrs == '':
+            return False
+        self.entry += self.line
+        return True
+
+    def extract_bugs_from_entry(self):
+        # Not all entries will contain bugs and some entries are even garbage
+        # that is not parsed (yet).
+        # FIXME: Malone entries are different
+        for bug_number in self.bug_pattern.findall(self.entry):
+#            import pdb; pdb.set_trace()
+            yield (bug_number, self.release, self.entry)
+        # We've consumed the entry
+        self.entry = ''
+
     def parse_bugs(self):
         for line in self.news:
             self.set_line(line)
@@ -59,11 +76,13 @@
                 continue
             try:
                 if self.confirm_release():
-                    yield (self.release,)
                     continue
             finally:
                 self.may_be_release = None
-
+            if self.add_line_to_entry():
+                continue
+            for b in self.extract_bugs_from_entry():
+                yield b
 
 def main():
     (opts, args) = opt_parser.parse_args(sys.argv[1:])
@@ -75,17 +94,19 @@
     news = open(opts.news_file)
     parser = NewsParser(news)
     try:
+        seen = 0
         for b in parser.parse_bugs():
             #(number, release, date, author, entry) = b
-            (release,) = b
-            (number, date, author, entry) = (123, '2010-01-01', 'joe',
-                                             '(joe, #123)')
+            (number, release, entry,) = b
+            (date, author) = ('2010-01-01', 'joe',)
             # indent entry
             entry = '\n'.join(['    ' + l for l in entry.splitlines()])
-            if number == bug:
-                print 'Bug #%s was fixed in bzr-%s:' % (number, release)
-                print entry
+#            if number == bug[1:]: # Strip the leading '#'
+            print 'Bug %s was fixed in bzr-%s:' % (number, release)
+            print entry
+            seen += 1
     finally:
+        print '%s bugs seen' % (seen,)
         news.close()
 
 



More information about the bazaar-commits mailing list