123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #!/usr/bin/env python3
- # Python program to set the version.
- ##############################################
- import re
- import sys
- import optparse
- 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
- parser = optparse.OptionParser( "usage: %prog major minor build" )
- (options, args) = parser.parse_args()
- if len(args) != 3:
- parser.error( "incorrect number of arguments" );
- major = args[0]
- minor = args[1]
- build = args[2]
- versionStr = major + "." + minor + "." + 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 )
- def macroVersionRule( line ):
- matchMajor = "#define TINYXML2_MAJOR_VERSION"
- matchMinor = "#define TINYXML2_MINOR_VERSION"
- matchBuild = "#define TINYXML2_PATCH_VERSION"
- if line[0:len(matchMajor)] == matchMajor:
- print( "1)macro Major found" )
- return matchMajor + " " + major + "\n"
- elif line[0:len(matchMinor)] == matchMinor:
- print( "2)macro Minor found" )
- return matchMinor + " " + minor + "\n"
- elif line[0:len(matchBuild)] == matchBuild:
- print( "3)macro Build found" )
- return matchBuild + " " + build + "\n"
- else:
- return line;
- fileProcess("tinyxml2.h", macroVersionRule)
- #### 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 cmakeRule( line ):
- matchVersion = "project(tinyxml2 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", cmakeRule )
- def mesonRule(line):
- match = re.search(r"(\s*version) : '(\d+.\d+.\d+)',", line)
- if match:
- print("1)meson.build version found.")
- return "{} : '{}.{}.{}',\n".format(match.group(1), major, minor, build)
- return line
- fileProcess("meson.build", mesonRule)
- print( "Release note:" )
- print( '1. Build. g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe' )
- print( '2. Commit. git commit -am"setting the version to ' + versionStr + '"' )
- print( '3. Tag. git tag ' + versionStr )
- print( ' OR git tag -a ' + versionStr + ' -m [tag message]' )
- print( 'Remember to "git push" both code and tag. For the tag:' )
- print( 'git push origin [tagname]')
|