#!/usr/bin/python # Creates release announcement text using the contents of: # md5sums # sha1sums # getsigs-output (generate with getsigs.pl) # all of which must be in the current directory. # # Writes output to: # announcement.html # announcement.txt ann_text = """\ I'm happy to announce Subversion @VERSION@, available from: http://subversion.tigris.org/downloads/subversion-@VERSION@.tar.bz2 http://subversion.tigris.org/downloads/subversion-@VERSION@.tar.gz http://subversion.tigris.org/downloads/subversion-@VERSION@.zip http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.tar.bz2 http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.tar.gz http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.zip The MD5 checksums are: @MD5SUMS@ The SHA1 checksums are: @SHA1SUMS@ PGP Signatures are available at: http://subversion.tigris.org/downloads/subversion-@VERSION@.tar.bz2.asc http://subversion.tigris.org/downloads/subversion-@VERSION@.tar.gz.asc http://subversion.tigris.org/downloads/subversion-@VERSION@.zip.asc http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.tar.bz2.asc http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.tar.gz.asc http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.zip.asc For this release, the following people have provided PGP signatures: @SIGINFO@ Release notes for the @MAJOR_MINOR@.x release series may be found at: http://subversion.tigris.org/svn_@MAJOR_MINOR@_releasenotes.html You can find the list of changes between @VERSION@ and earlier versions at: http://svn.collab.net/repos/svn/tags/@VERSION@/CHANGES Questions, comments, and bug reports to users@subversion.tigris.org. Thanks, - The Subversion Team """ ann_html = """\

I'm happy to announce Subversion @VERSION@, available from:

http://subversion.tigris.org/downloads/subversion-@VERSION@.tar.bz2
http://subversion.tigris.org/downloads/subversion-@VERSION@.tar.gz
http://subversion.tigris.org/downloads/subversion-@VERSION@.zip
http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.tar.bz2
http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.tar.gz
http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.zip

The MD5 checksums are:

@MD5SUMS@

The SHA1 checksums are:

@SHA1SUMS@

PGP Signatures are available at:

http://subversion.tigris.org/downloads/subversion-@VERSION@.tar.bz2.asc
http://subversion.tigris.org/downloads/subversion-@VERSION@.tar.gz.asc
http://subversion.tigris.org/downloads/subversion-@VERSION@.zip.asc
http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.tar.bz2.asc
http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.tar.gz.asc
http://subversion.tigris.org/downloads/subversion-deps-@VERSION@.zip.asc

For this release, the following people have provided PGP signatures:

@SIGINFO@

Release notes for the @MAJOR_MINOR@.x release series may be found at:

http://subversion.tigris.org/svn_@MAJOR_MINOR@_releasenotes.html

You can find the list of changes between @VERSION@ and earlier versions at:

http://svn.collab.net/repos/svn/tags/@VERSION@/CHANGES
""" import sys, re def fmtsums_text(sumlist): return "\n".join([" " + x for x in sumlist]) def fmtsums_html(sumlist): return "\n".join(["
" + x + "
" for x in sumlist]) def main(): global ann_text global ann_html version = sys.argv[1] if not re.compile(r'^\d+\.\d+\.\d+(-(alpha|beta|rc)\d+)?$').match(version): print "Did you really mean to use version '%s'?" % version return md5sums = [] sha1sums = [] siginfo = [] for line in open('md5sums'): if line.find('subversion-') == -1: continue md5sums.append(line.strip('\n')) for line in open('sha1sums'): if line.find('subversion-') == -1: continue sha1sums.append(line.strip('\n')) for line in open('getsigs-output'): siginfo.append(line.rstrip('\n')) ann_text = ann_text.replace('@VERSION@', version) ann_html = ann_html.replace('@VERSION@', version) ann_text = ann_text.replace('@MAJOR_MINOR@', version[0:3]) ann_html = ann_html.replace('@MAJOR_MINOR@', version[0:3]) ann_text = ann_text.replace('@MD5SUMS@', fmtsums_text(md5sums)) ann_text = ann_text.replace('@SHA1SUMS@', fmtsums_text(sha1sums)) ann_html = ann_html.replace('@MD5SUMS@', fmtsums_html(md5sums)) ann_html = ann_html.replace('@SHA1SUMS@', fmtsums_html(sha1sums)) ann_text = ann_text.replace('@SIGINFO@', "\n".join(siginfo)) htmlsigs = [] for i in range(0, len(siginfo), 2): htmlsigs.append("
" + siginfo[i].strip() + "\n" + siginfo[i+1].strip() + "
") ann_html = ann_html.replace('@SIGINFO@', "\n".join(htmlsigs)) open('announcement.txt', 'w').write(ann_text) open('announcement.html', 'w').write(ann_html) if __name__ == '__main__': main()