~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/fixed-in.py

  • Committer: Vincent Ladeuil
  • Date: 2010-09-27 22:20:36 UTC
  • mto: (5490.1.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 5492.
  • Revision ID: v.ladeuil+lp@free.fr-20100927222036-ye9qqlpq4bc4a542
Parse entries, extract bugs fron the entries (1105 bugs seen).

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
    release_re = re.compile("bzr[ -]")
22
22
    release_prefix_length = len('bzr ')
 
23
    bug_pattern = re.compile("(#(?:[0-9]+)(?:,\s)?)+")
23
24
 
24
25
    def __init__(self, news):
25
26
        self.news = news
52
53
            return True
53
54
        return False
54
55
 
 
56
    def add_line_to_entry(self):
 
57
        if self.lrs == '':
 
58
            return False
 
59
        self.entry += self.line
 
60
        return True
 
61
 
 
62
    def extract_bugs_from_entry(self):
 
63
        # Not all entries will contain bugs and some entries are even garbage
 
64
        # that is not parsed (yet).
 
65
        # FIXME: Malone entries are different
 
66
        for bug_number in self.bug_pattern.findall(self.entry):
 
67
#            import pdb; pdb.set_trace()
 
68
            yield (bug_number, self.release, self.entry)
 
69
        # We've consumed the entry
 
70
        self.entry = ''
 
71
 
55
72
    def parse_bugs(self):
56
73
        for line in self.news:
57
74
            self.set_line(line)
59
76
                continue
60
77
            try:
61
78
                if self.confirm_release():
62
 
                    yield (self.release,)
63
79
                    continue
64
80
            finally:
65
81
                self.may_be_release = None
66
 
 
 
82
            if self.add_line_to_entry():
 
83
                continue
 
84
            for b in self.extract_bugs_from_entry():
 
85
                yield b
67
86
 
68
87
def main():
69
88
    (opts, args) = opt_parser.parse_args(sys.argv[1:])
75
94
    news = open(opts.news_file)
76
95
    parser = NewsParser(news)
77
96
    try:
 
97
        seen = 0
78
98
        for b in parser.parse_bugs():
79
99
            #(number, release, date, author, entry) = b
80
 
            (release,) = b
81
 
            (number, date, author, entry) = (123, '2010-01-01', 'joe',
82
 
                                             '(joe, #123)')
 
100
            (number, release, entry,) = b
 
101
            (date, author) = ('2010-01-01', 'joe',)
83
102
            # indent entry
84
103
            entry = '\n'.join(['    ' + l for l in entry.splitlines()])
85
 
            if number == bug:
86
 
                print 'Bug #%s was fixed in bzr-%s:' % (number, release)
87
 
                print entry
 
104
#            if number == bug[1:]: # Strip the leading '#'
 
105
            print 'Bug %s was fixed in bzr-%s:' % (number, release)
 
106
            print entry
 
107
            seen += 1
88
108
    finally:
 
109
        print '%s bugs seen' % (seen,)
89
110
        news.close()
90
111
 
91
112