3 import subprocess, re, sys
5 lpbugs_re = re.compile(r'lp: #([0-9, ]+)', re.I)
7 bzr = subprocess.Popen(['bzr', 'diff', 'NEWS'], stdout=subprocess.PIPE)
8 raw_msg = bzr.communicate()[0].strip()
9 if bzr.returncode != 1:
10 print >> sys.stderr, 'bzr diff NEWS failed'
13 # parse/format message
15 for l in raw_msg.splitlines():
16 if not l.startswith('+ '):
22 if msg.startswith('-'):
25 print '-- commit message: --'
30 print >> sys.stderr, 'No message in NEWS, aborting'
33 # parse Launchpad bugs
35 for b_grp in lpbugs_re.finditer(msg):
36 for b in b_grp.group(1).split(','):
37 lpbugs.append(b.strip())
38 print 'Fixed LP bugs:', ' '.join(lpbugs)
41 argv = ['bzr', 'commit', '-m', msg]
43 argv += ['--fixes', 'lp:' + b]
45 sys.exit(subprocess.call(argv))