]> piware.de Git - bin.git/blob - newscommit
postinst-setup-fedora: Add some missing packages
[bin.git] / newscommit
1 #!/usr/bin/python
2
3 import subprocess, re, sys
4
5 lpbugs_re = re.compile(r'lp: #([0-9, ]+)', re.I)
6
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'
11     sys.exit(1)
12
13 # parse/format message
14 msg = ''
15 for l in raw_msg.splitlines():
16     if not l.startswith('+ '):
17         continue
18     if msg:
19         msg += ' '
20     msg += l[2:].strip()
21
22 if msg.startswith('-'):
23     msg = msg[1:].strip()
24
25 print '-- commit message: --'
26 print msg
27 print '---'
28
29 if not msg:
30     print >> sys.stderr, 'No message in NEWS, aborting'
31     sys.exit(1)
32
33 # parse Launchpad bugs
34 lpbugs = []
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)
39
40 # commit
41 argv = ['bzr', 'commit', '-m', msg]
42 for b in lpbugs:
43     argv += ['--fixes', 'lp:' + b]
44 argv += sys.argv[1:]
45
46 sys.exit(subprocess.call(argv))
47