Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/scripts
diff options
context:
space:
mode:
authorPhil Nash2015-06-29 18:05:23 +0100
committerPhil Nash2015-06-29 18:06:15 +0100
commit21f7ef6fdcfcc98fa668028c02ba51643982e7cf (patch)
treebdf6b9ca32777405feeefa8a6f5e34481fe6f468 /scripts
parentf5fef1ebed9faaf12058d7a16223b4f617e6a5b6 (diff)
downloadcatch3-1.2.0.tar.gz
Committed to semantic versioningv1.2.0
as prompted by #365, #430, #447 and a thread on the google group. - split version bumping out of generateSingleHeader script - separate scripts for bumping each version component - "build" number only incremented for "develop" builds
Diffstat (limited to 'scripts')
-rw-r--r--scripts/developBuild.py9
-rw-r--r--scripts/generateSingleHeader.py93
-rw-r--r--scripts/majorRelease.py9
-rw-r--r--scripts/minorRelease.py9
-rw-r--r--scripts/patchRelease.py9
-rw-r--r--scripts/releaseCommon.py89
6 files changed, 145 insertions, 73 deletions
diff --git a/scripts/developBuild.py b/scripts/developBuild.py
new file mode 100644
index 00000000..c244871a
--- /dev/null
+++ b/scripts/developBuild.py
@@ -0,0 +1,9 @@
+from __future__ import print_function
+from releaseCommon import Version
+
+v = Version()
+v.incrementBuildNumber()
+v.updateVersionFile()
+v.updateReadmeFile()
+
+print( "Updated Version.hpp and README to v{0}".format( v.getVersionString() ) ) \ No newline at end of file
diff --git a/scripts/generateSingleHeader.py b/scripts/generateSingleHeader.py
index cd97010f..419633f8 100644
--- a/scripts/generateSingleHeader.py
+++ b/scripts/generateSingleHeader.py
@@ -7,8 +7,9 @@ import datetime
import string
from scriptCommon import catchPath
+from releaseCommon import Version
+
-versionParser = re.compile( r'(\s*Version\slibraryVersion)\s*\(\s*(.*)\s*,\s*(.*)\s*,\s*(.*)\s*,\s*\"(.*)\"\s*\).*' )
includesParser = re.compile( r'\s*#include\s*"(.*)"' )
guardParser = re.compile( r'\s*#.*TWOBLUECUBES_CATCH_.*_INCLUDED')
defineParser = re.compile( r'\s*#define')
@@ -20,22 +21,15 @@ commentParser2 = re.compile( r'^ \*')
blankParser = re.compile( r'^\s*$')
seenHeaders = set([])
rootPath = os.path.join( catchPath, 'include/' )
-versionPath = os.path.join( rootPath, "internal/catch_version.hpp" )
-readmePath = os.path.join( catchPath, "README.md" )
outputPath = os.path.join( catchPath, 'single_include/catch.hpp' )
-bumpVersion = True
includeImpl = True
for arg in sys.argv[1:]:
arg = string.lower(arg)
- if arg == "nobump":
- bumpVersion = False
- print( "Not bumping version number" )
- elif arg == "noimpl":
+ if arg == "noimpl":
includeImpl = False
- bumpVersion = False
- print( "Not including impl code (and not bumping version)" )
+ print( "Not including impl code" )
else:
print( "\n** Unrecognised argument: " + arg + " **\n" )
exit(1)
@@ -87,70 +81,23 @@ def parseFile( path, filename ):
if blanks < 2:
write( line.rstrip() + "\n" )
-class Version:
- def __init__(self):
- f = open( versionPath, 'r' )
- for line in f:
- m = versionParser.match( line )
- if m:
- self.variableDecl = m.group(1)
- self.majorVersion = int(m.group(2))
- self.minorVersion = int(m.group(3))
- self.buildNumber = int(m.group(4))
- self.branchName = m.group(5)
- f.close()
-
- def incrementBuildNumber(self):
- self.buildNumber = self.buildNumber+1
-
- def updateVersionFile(self):
- f = open( versionPath, 'r' )
- lines = []
- for line in f:
- m = versionParser.match( line )
- if m:
- lines.append( '{0}( {1}, {2}, {3}, "{4}" );'.format( self.variableDecl, self.majorVersion, self.minorVersion, self.buildNumber, self.branchName ) )
- else:
- lines.append( line.rstrip() )
- f.close()
- f = open( versionPath, 'w' )
- for line in lines:
- f.write( line + "\n" )
-
- def updateReadmeFile(self):
- f = open( readmePath, 'r' )
- lines = []
- for line in f:
- lines.append( line.rstrip() )
- f.close()
- f = open( readmePath, 'w' )
- for line in lines:
- if line.startswith( "*v" ):
- f.write( '*v{0}.{1} build {2} ({3} branch)*\n'.format( self.majorVersion, self.minorVersion, self.buildNumber, self.branchName ) )
- else:
- f.write( line + "\n" )
-def generateSingleInclude():
- v = Version()
- if bumpVersion:
- v.incrementBuildNumber()
- v.updateVersionFile()
- v.updateReadmeFile()
- out.write( "/*\n" )
- out.write( " * CATCH v{0}.{1} build {2} ({3} branch)\n".format( v.majorVersion, v.minorVersion, v.buildNumber, v.branchName ) )
- out.write( " * Generated: {0}\n".format( datetime.datetime.now() ) )
- out.write( " * ----------------------------------------------------------\n" )
- out.write( " * This file has been merged from multiple headers. Please don't edit it directly\n" )
- out.write( " * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.\n" )
- out.write( " *\n" )
- out.write( " * Distributed under the Boost Software License, Version 1.0. (See accompanying\n" )
- out.write( " * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n" )
- out.write( " */\n" )
- out.write( "#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n" )
- out.write( "#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n" )
+v = Version()
+out.write( "/*\n" )
+out.write( " * Catch v{0}\n".format( v.getVersionString() ) )
+out.write( " * Generated: {0}\n".format( datetime.datetime.now() ) )
+out.write( " * ----------------------------------------------------------\n" )
+out.write( " * This file has been merged from multiple headers. Please don't edit it directly\n" )
+out.write( " * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.\n" )
+out.write( " *\n" )
+out.write( " * Distributed under the Boost Software License, Version 1.0. (See accompanying\n" )
+out.write( " * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n" )
+out.write( " */\n" )
+out.write( "#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n" )
+out.write( "#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n" )
- parseFile( rootPath, 'catch.hpp' )
+parseFile( rootPath, 'catch.hpp' )
- out.write( "#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n\n" )
+out.write( "#endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED\n\n" )
-generateSingleInclude()
+print ("Generated single include for Catch v{0}\n".format( v.getVersionString() ) )
diff --git a/scripts/majorRelease.py b/scripts/majorRelease.py
new file mode 100644
index 00000000..03b7e78e
--- /dev/null
+++ b/scripts/majorRelease.py
@@ -0,0 +1,9 @@
+from __future__ import print_function
+from releaseCommon import Version
+
+v = Version()
+v.incrementMajorVersion()
+v.updateVersionFile()
+v.updateReadmeFile()
+
+print( "Updated Version.hpp and README to v{0}".format( v.getVersionString() ) ) \ No newline at end of file
diff --git a/scripts/minorRelease.py b/scripts/minorRelease.py
new file mode 100644
index 00000000..bbd97ed0
--- /dev/null
+++ b/scripts/minorRelease.py
@@ -0,0 +1,9 @@
+from __future__ import print_function
+from releaseCommon import Version
+
+v = Version()
+v.incrementMinorVersion()
+v.updateVersionFile()
+v.updateReadmeFile()
+
+print( "Updated Version.hpp and README to v{0}".format( v.getVersionString() ) ) \ No newline at end of file
diff --git a/scripts/patchRelease.py b/scripts/patchRelease.py
new file mode 100644
index 00000000..6abf87af
--- /dev/null
+++ b/scripts/patchRelease.py
@@ -0,0 +1,9 @@
+from __future__ import print_function
+from releaseCommon import Version
+
+v = Version()
+v.incrementPatchNumber()
+v.updateVersionFile()
+v.updateReadmeFile()
+
+print( "Updated Version.hpp and README to v{0}".format( v.getVersionString() ) ) \ No newline at end of file
diff --git a/scripts/releaseCommon.py b/scripts/releaseCommon.py
new file mode 100644
index 00000000..14eb235e
--- /dev/null
+++ b/scripts/releaseCommon.py
@@ -0,0 +1,89 @@
+from __future__ import print_function
+
+import os
+import sys
+import re
+import string
+
+from scriptCommon import catchPath
+
+versionParser = re.compile( r'(\s*Version\slibraryVersion)\s*\(\s*(.*)\s*,\s*(.*)\s*,\s*(.*)\s*,\s*\"(.*)\"\s*,\s*(.*)\s*\).*' )
+rootPath = os.path.join( catchPath, 'include/' )
+versionPath = os.path.join( rootPath, "internal/catch_version.hpp" )
+readmePath = os.path.join( catchPath, "README.md" )
+
+class Version:
+ def __init__(self):
+ f = open( versionPath, 'r' )
+ for line in f:
+ m = versionParser.match( line )
+ if m:
+ self.variableDecl = m.group(1)
+ self.majorVersion = int(m.group(2))
+ self.minorVersion = int(m.group(3))
+ self.patchNumber = int(m.group(4))
+ self.branchName = m.group(5)
+ self.buildNumber = int(m.group(6))
+ f.close()
+
+ def nonDevelopRelease(self):
+ if self.branchName != "":
+ self.branchName = ""
+ self.buildNumber = 0
+ def developBuild(self):
+ if self.branchName == "":
+ self.branchName = "develop"
+ self.buildNumber = 0
+
+ def incrementBuildNumber(self):
+ self.developBuild()
+ self.buildNumber = self.buildNumber+1
+
+ def incrementPatchNumber(self):
+ self.nonDevelopRelease()
+ self.patchNumber = self.patchNumber+1
+
+ def incrementMinorVersion(self):
+ self.nonDevelopRelease()
+ self.patchNumber = 0
+ self.minorVersion = self.minorVersion+1
+
+ def incrementMajorVersion(self):
+ self.nonDevelopRelease()
+ self.patchNumber = 0
+ self.minorVersion = 0
+ self.majorVersion = self.majorVersion+1
+
+ def getVersionString(self):
+ versionString = '{0}.{1}.{2}'.format( self.majorVersion, self.minorVersion, self.patchNumber )
+ if self.branchName != "":
+ versionString = versionString + '-{0}.{1}'.format( self.branchName, self.buildNumber )
+ return versionString
+
+ def updateVersionFile(self):
+ f = open( versionPath, 'r' )
+ lines = []
+ for line in f:
+ m = versionParser.match( line )
+ if m:
+ lines.append( '{0}( {1}, {2}, {3}, "{4}", {5} );'.format( self.variableDecl, self.majorVersion, self.minorVersion, self.patchNumber, self.branchName, self.buildNumber ) )
+ else:
+ lines.append( line.rstrip() )
+ f.close()
+ f = open( versionPath, 'w' )
+ for line in lines:
+ f.write( line + "\n" )
+
+ def updateReadmeFile(self):
+ f = open( readmePath, 'r' )
+ lines = []
+ for line in f:
+ lines.append( line.rstrip() )
+ f.close()
+ f = open( readmePath, 'w' )
+ for line in lines:
+ if line.startswith( "*v" ):
+ f.write( '*v{0}*\n'.format( self.getVersionString() ) )
+ else:
+ f.write( line + "\n" )
+