diff options
Diffstat (limited to 'buildscripts/frob_version.py')
-rw-r--r-- | buildscripts/frob_version.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/buildscripts/frob_version.py b/buildscripts/frob_version.py new file mode 100644 index 0000000..7b89e0b --- /dev/null +++ b/buildscripts/frob_version.py @@ -0,0 +1,69 @@ +#!/usr/bin/python + +from __future__ import with_statement +import tempfile +import sys +import re +import os + +def opentemp(basename): + # The following doesn't work in python before 2.6 +# return tempfile.NamedTemporaryFile('w', -1, ".XXXXXX", basename, '.', False) + fname = basename +".TMP" + if os.path.exists(fname): + raise "not clobbering file %s" % fname + return open(fname, 'w') + +def frob_debian_changelog(version): + fname = 'debian/changelog' + with opentemp(fname) as o: + with open(fname) as i: + lineno = 0 + for line in i: + if lineno == 0: + newline = re.sub(r'\([^)]*\)', '('+version+')', line) + o.write(newline) + else: + o.write(line) + os.rename(o.name, fname) + +def frob_rpm_spec(version): + fname = 'rpm/mongo.spec' + with opentemp(fname) as o: + with open(fname) as i: + frobbed = False + for line in i: + if frobbed: + o.write(line) + else: + if line.find('Version:') == 0: + print >> o, 'Version: ' + version + frobbed = True + else: + o.write(line) + os.rename(o.name, fname) + +def frob_stdafx_cpp(version): + fname = 'stdafx.cpp' + with opentemp(fname) as o: + with open(fname) as i: + frobbed = False + for line in i: + if frobbed: + o.write(line) + else: + if re.search(r'const.*char.*versionString\[\].*=', line): + o.write(' const char versionString[] = "%s";' % version) + else: + o.write(line) + os.rename(o.name, fname) + +(progname, version) = sys.argv +if version is None: + print >> sys.stderr, 'usage: %s VERSION' % progname + sys.exit(1) +frob_debian_changelog(version) +frob_rpm_spec(version) +## I don't yet know what-all cares about the versionString inside the +## mongo code, so I'm not actually calling this yet. +# frob_stdafx_cpp(version) |