blob: c49f74617df64f2bbe98989fde650cec5396fa11 [file] [log] [blame]
Phil Nash21f7ef62015-06-29 18:05:23 +01001from __future__ import print_function
2
3import os
4import sys
5import re
6import string
7
8from scriptCommon import catchPath
9
Kevin Usheye04dc512017-03-16 11:17:45 -070010versionParser = re.compile( r'(\s*static\sVersion\sversion)\s*\(\s*(.*)\s*,\s*(.*)\s*,\s*(.*)\s*,\s*\"(.*)\"\s*,\s*(.*)\s*\).*' )
Phil Nash21f7ef62015-06-29 18:05:23 +010011rootPath = os.path.join( catchPath, 'include/' )
12versionPath = os.path.join( rootPath, "internal/catch_version.hpp" )
13readmePath = os.path.join( catchPath, "README.md" )
14
15class Version:
16 def __init__(self):
17 f = open( versionPath, 'r' )
18 for line in f:
19 m = versionParser.match( line )
20 if m:
21 self.variableDecl = m.group(1)
22 self.majorVersion = int(m.group(2))
23 self.minorVersion = int(m.group(3))
24 self.patchNumber = int(m.group(4))
25 self.branchName = m.group(5)
26 self.buildNumber = int(m.group(6))
27 f.close()
28
29 def nonDevelopRelease(self):
30 if self.branchName != "":
31 self.branchName = ""
32 self.buildNumber = 0
33 def developBuild(self):
34 if self.branchName == "":
35 self.branchName = "develop"
36 self.buildNumber = 0
37
38 def incrementBuildNumber(self):
39 self.developBuild()
40 self.buildNumber = self.buildNumber+1
41
42 def incrementPatchNumber(self):
43 self.nonDevelopRelease()
44 self.patchNumber = self.patchNumber+1
45
46 def incrementMinorVersion(self):
47 self.nonDevelopRelease()
48 self.patchNumber = 0
49 self.minorVersion = self.minorVersion+1
50
51 def incrementMajorVersion(self):
52 self.nonDevelopRelease()
53 self.patchNumber = 0
54 self.minorVersion = 0
55 self.majorVersion = self.majorVersion+1
56
57 def getVersionString(self):
58 versionString = '{0}.{1}.{2}'.format( self.majorVersion, self.minorVersion, self.patchNumber )
59 if self.branchName != "":
60 versionString = versionString + '-{0}.{1}'.format( self.branchName, self.buildNumber )
61 return versionString
62
63 def updateVersionFile(self):
64 f = open( versionPath, 'r' )
65 lines = []
66 for line in f:
67 m = versionParser.match( line )
68 if m:
69 lines.append( '{0}( {1}, {2}, {3}, "{4}", {5} );'.format( self.variableDecl, self.majorVersion, self.minorVersion, self.patchNumber, self.branchName, self.buildNumber ) )
70 else:
71 lines.append( line.rstrip() )
72 f.close()
73 f = open( versionPath, 'w' )
74 for line in lines:
75 f.write( line + "\n" )
76
77 def updateReadmeFile(self):
Martin Hořeňovský73872202017-01-26 13:12:14 +010078 downloadParser = re.compile( r'<a href=\"https://github.com/philsquared/Catch/releases/download/v\d+\.\d+\.\d+/catch.hpp\">' )
Phil Nash21f7ef62015-06-29 18:05:23 +010079 f = open( readmePath, 'r' )
80 lines = []
81 for line in f:
82 lines.append( line.rstrip() )
83 f.close()
84 f = open( readmePath, 'w' )
85 for line in lines:
Martin Hořeňovský73872202017-01-26 13:12:14 +010086 line = downloadParser.sub( r'<a href="https://github.com/philsquared/Catch/releases/download/v{0}/catch.hpp">'.format(self.getVersionString()) , line)
87 f.write( line + "\n" )
Phil Nash21f7ef62015-06-29 18:05:23 +010088