100 lines
3.2 KiB
Python
100 lines
3.2 KiB
Python
|
#!/usr/bin/env python
|
||
|
#
|
||
|
# version management
|
||
|
#
|
||
|
|
||
|
import os
|
||
|
import sys
|
||
|
import re
|
||
|
|
||
|
def GetVersion():
|
||
|
keys = ( 'ENGINE_VERSION_MAJOR', 'ENGINE_VERSION_MINOR', 'ENGINE_SRC_REVISION', 'ENGINE_MEDIA_REVISION' )
|
||
|
version = [ '-1','-1','-1','-1' ]
|
||
|
buildVersion = {}
|
||
|
|
||
|
try:
|
||
|
f = file( 'BuildVersion.cpp', 'r' )
|
||
|
except IOError, (errno, strerror):
|
||
|
return version
|
||
|
|
||
|
for line in f.readlines():
|
||
|
m = re.match( 'int\s+(\w+) = ([\-0-9]+);', line )
|
||
|
|
||
|
if m:
|
||
|
buildVersion[ m.group( 1 ) ] = m.group( 2 )
|
||
|
|
||
|
f.close()
|
||
|
|
||
|
i = 0
|
||
|
for key in keys:
|
||
|
if buildVersion.has_key( key ):
|
||
|
version[ i ] = buildVersion[ key ]
|
||
|
i = i + 1
|
||
|
|
||
|
sys.stdout.write( "Version major: %s minor: %s src: %s media: %s\n" % ( version[0], version[1], version[2], version[3] ) )
|
||
|
|
||
|
return version
|
||
|
|
||
|
def WriteRc( filename, modulename, engineVersionMajor, engineVersionMinor, srcVersion, mediaVersion ):
|
||
|
try:
|
||
|
f = file( filename + '.template', 'r' )
|
||
|
except IOError, ( errno, strerror ):
|
||
|
sys.stdout.write( 'Failed to open %s: %s\n' % ( filename, strerror ) )
|
||
|
return False
|
||
|
|
||
|
versionrc = f.readlines()
|
||
|
f.close()
|
||
|
|
||
|
valueDict = {
|
||
|
'CompanyName' : 'Splash Damage, Ltd.',
|
||
|
'FileDescription' : 'Enemy Territory: Quake Wars',
|
||
|
'InternalName' : modulename,
|
||
|
'LegalCopyright' : 'Copyright (C) 2007 Splash Damage, Ltd.',
|
||
|
'OriginalFilename' : modulename,
|
||
|
'ProductName' : 'Enemy Territory: Quake Wars',
|
||
|
}
|
||
|
|
||
|
try:
|
||
|
f = file( filename, 'w' )
|
||
|
except IOError, ( errno, strerror ):
|
||
|
sys.stdout.write( 'Failed to open %s: %s\n' % ( filename, strerror ) )
|
||
|
return False
|
||
|
|
||
|
for line in versionrc:
|
||
|
m = re.match( '^\s+FILEVERSION (\d+),(\d+),(\d+),(\d+)', line )
|
||
|
if m:
|
||
|
f.write( ' FILEVERSION %s,%s,%s,%s\n' % ( engineVersionMajor, engineVersionMinor, srcVersion, mediaVersion ) )
|
||
|
continue
|
||
|
|
||
|
m = re.match( '^\s+PRODUCTVERSION (\d+),(\d+),(\d+),(\d+)', line )
|
||
|
if m:
|
||
|
f.write( ' PRODUCTVERSION %s,%s,%s,%s\n' % ( engineVersionMajor, engineVersionMinor, srcVersion, mediaVersion ) )
|
||
|
continue
|
||
|
|
||
|
m = re.match( '^\s+VALUE \"(\S+)\", \"(.+)\"', line )
|
||
|
if m:
|
||
|
if m.group( 1 ) == 'FileVersion':
|
||
|
f.write( ' VALUE "FileVersion", "%s.%s.%s.%s"\n' % ( engineVersionMajor, engineVersionMinor, srcVersion, mediaVersion ) )
|
||
|
continue
|
||
|
elif m.group( 1 ) == 'ProductVersion':
|
||
|
f.write( ' VALUE "ProductVersion", "%s.%s.%s.%s"\n' % ( engineVersionMajor, engineVersionMinor, srcVersion, mediaVersion ) )
|
||
|
continue
|
||
|
elif valueDict.has_key( m.group( 1 ) ):
|
||
|
f.write( ' VALUE "%s", "%s"\n' % ( m.group( 1 ), valueDict[ m.group( 1 ) ] ) )
|
||
|
continue
|
||
|
|
||
|
f.write( line )
|
||
|
|
||
|
f.close()
|
||
|
|
||
|
return True
|
||
|
|
||
|
def main():
|
||
|
version = GetVersion()
|
||
|
|
||
|
WriteRc( 'version.rc', 'compiledscriptx86.dll', version[0], version[1], version[2], version[3] )
|
||
|
|
||
|
# can be used as module or by direct call
|
||
|
if __name__ == '__main__':
|
||
|
main()
|