• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Python program to set the version.
2##############################################
3
4import re
5import sys
6import optparse
7
8def fileProcess( name, lineFunction ):
9	filestream = open( name, 'r' )
10	if filestream.closed:
11		print( "file " + name + " not open." )
12		return
13
14	output = ""
15	print( "--- Processing " + name + " ---------" )
16	while 1:
17		line = filestream.readline()
18		if not line: break
19		output += lineFunction( line )
20	filestream.close()
21
22	if not output: return			# basic error checking
23
24	print( "Writing file " + name )
25	filestream = open( name, "w" );
26	filestream.write( output );
27	filestream.close()
28
29def echoInput( line ):
30	return line
31
32parser = optparse.OptionParser( "usage: %prog major minor build" )
33(options, args) = parser.parse_args()
34if len(args) != 3:
35	parser.error( "incorrect number of arguments" );
36
37major = args[0]
38minor = args[1]
39build = args[2]
40versionStr = major + "." + minor + "." + build
41
42print ("Setting dox,tinyxml2.h")
43print ("Version: " + major + "." + minor + "." + build)
44
45#### Write the tinyxml.h ####
46
47def engineRule( line ):
48
49	matchMajor = "static const int TIXML2_MAJOR_VERSION"
50	matchMinor = "static const int TIXML2_MINOR_VERSION"
51	matchBuild = "static const int TIXML2_PATCH_VERSION"
52
53	if line[0:len(matchMajor)] == matchMajor:
54		print( "1)tinyxml2.h Major found" )
55		return matchMajor + " = " + major + ";\n"
56
57	elif line[0:len(matchMinor)] == matchMinor:
58		print( "2)tinyxml2.h Minor found" )
59		return matchMinor + " = " + minor + ";\n"
60
61	elif line[0:len(matchBuild)] == matchBuild:
62		print( "3)tinyxml2.h Build found" )
63		return matchBuild + " = " + build + ";\n"
64
65	else:
66		return line;
67
68fileProcess( "tinyxml2.h", engineRule )
69
70
71#### Write the dox ####
72
73def doxRule( line ):
74
75	match = "PROJECT_NUMBER"
76
77	if line[0:len( match )] == match:
78		print( "dox project found" )
79		return "PROJECT_NUMBER = " + major + "." + minor + "." + build + "\n"
80
81	else:
82		return line;
83
84fileProcess( "dox", doxRule )
85
86
87#### Write the CMakeLists.txt ####
88
89def cmakeRule1( line ):
90
91	matchVersion = "set(GENERIC_LIB_VERSION"
92
93	if line[0:len(matchVersion)] == matchVersion:
94		print( "1)tinyxml2.h Major found" )
95		return matchVersion + " \"" + major + "." + minor + "." + build + "\")" + "\n"
96
97	else:
98		return line;
99
100fileProcess( "CMakeLists.txt", cmakeRule1 )
101
102def cmakeRule2( line ):
103
104	matchSoversion = "set(GENERIC_LIB_SOVERSION"
105
106	if line[0:len(matchSoversion)] == matchSoversion:
107		print( "1)tinyxml2.h Major found" )
108		return matchSoversion + " \"" + major + "\")" + "\n"
109
110	else:
111		return line;
112
113fileProcess( "CMakeLists.txt", cmakeRule2 )
114
115print( "Release note:" )
116print( '1. Build.   g++ -Wall -DDEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe' )
117print( '2. Commit.  git commit -am"setting the version to ' + versionStr + '"' )
118print( '3. Tag.     git tag ' + versionStr )
119print( '   OR       git tag -a ' + versionStr + ' -m [tag message]' )
120print( 'Remember to "git push" both code and tag. For the tag:' )
121print( 'git push origin [tagname]')
122
123