0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-28 16:24:56 +01:00
mongodb/buildscripts/frob_version.py
2010-10-21 16:52:51 -04:00

70 lines
2.1 KiB
Python

#!/usr/bin/env 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)