# Python program to set the version.
##############################################

import re
import sys

def fileProcess( name, lineFunction ):
	filestream = open( name, 'r' )
	if filestream.closed:
		print( "file " + name + " not open." )
		return

	output = ""
	print( "--- Processing " + name + " ---------" )
	while 1:
		line = filestream.readline()
		if not line: break
		output += lineFunction( line )
	filestream.close()
	
	if not output: return			# basic error checking
	
	print( "Writing file " + name )
	filestream = open( name, "w" );
	filestream.write( output );
	filestream.close()
	
	
def echoInput( line ):
	return line

major = input( "Major: " )
minor = input( "Minor: " )
build = input( "Build: " )

print "Setting dox,tinyxml2.h"
print "Version: " + `major` + "." + `minor` + "." + `build`

#### Write the tinyxml.h ####

def engineRule( line ):

	matchMajor = "static const int TIXML2_MAJOR_VERSION"
	matchMinor = "static const int TIXML2_MINOR_VERSION"
	matchBuild = "static const int TIXML2_PATCH_VERSION"

	if line[0:len(matchMajor)] == matchMajor:
		print "1)tinyxml2.h Major found"
		return matchMajor + " = " + `major` + ";\n"

	elif line[0:len(matchMinor)] == matchMinor:
		print "2)tinyxml2.h Minor found"
		return matchMinor + " = " + `minor` + ";\n"

	elif line[0:len(matchBuild)] == matchBuild:
		print "3)tinyxml2.h Build found"
		return matchBuild + " = " + `build` + ";\n"

	else:
		return line;

fileProcess( "tinyxml2.h", engineRule )


#### Write the dox ####

def doxRule( line ):

	match = "PROJECT_NUMBER"

	if line[0:len( match )] == match:
		print "dox project found"
		return "PROJECT_NUMBER = " + `major` + "." + `minor` + "." + `build` + "\n"

	else:
		return line;

fileProcess( "dox", doxRule )


#### Write the CMakeLists.txt ####

def cmakeRule1( line ):

	matchVersion = "set(GENERIC_LIB_VERSION"

	if line[0:len(matchVersion)] == matchVersion:
		print "1)tinyxml2.h Major found"
		return matchVersion + " \"" + `major` + "." + `minor` + "." + `build` + "\")" + "\n"

	else:
		return line;

fileProcess( "CMakeLists.txt", cmakeRule1 )

def cmakeRule2( line ):

	matchSoversion = "set(GENERIC_LIB_SOVERSION"

	if line[0:len(matchSoversion)] == matchSoversion:
		print "1)tinyxml2.h Major found"
		return matchSoversion + " \"" + `major` + "\")" + "\n"

	else:
		return line;

fileProcess( "CMakeLists.txt", cmakeRule2 )
