deployment/patch-version.py (42 lines of code) (raw):

#!/usr/bin/python3 import sys import os import xml.dom.minidom as md def writeXml(document, path): with open(path, "w" ) as fs: fs.write(document.toxml() ) if len(sys.argv) != 3: print("There are %d arguments" % (len(sys.argv)-1)) print("Arguments should be") print("1-File path") print("2-Patch number") exit(1) else: path = sys.argv[1] patchNumber = sys.argv[2] print ('Text file: %s' % (path)) print ('Patch Number: %s' % (patchNumber)) # Load XML and print out document = md.parse(path) print('XML content:') print(document.toxml()) # Add patch to the version version=document.getElementsByTagName('Version')[0] patchVersion = version.firstChild.nodeValue versionParts = patchVersion.split('.') if len(versionParts)!=4: print("The project version should have four parts, e.g. 1.2.3.4 but doesn't: " % patchVersion) exit(1) else: version.firstChild.nodeValue = versionParts[0] + '.' + versionParts[1] + '.' + versionParts[2] + "." + patchNumber fullVersion = version.firstChild.nodeValue # Partial versions minorVersion = versionParts[0] + '.' + versionParts[1] majorVersion = versionParts[0] # Output project print('Project content:') print(document.toxml()) writeXml(document, path) # Output variable print('Set the full version in GitHub Action output: %s' % fullVersion) print('##[set-output name=full-version;]%s' % fullVersion) print('Set the patch version in GitHub Action output: %s' % patchVersion) print('##[set-output name=patch-version;]%s' % patchVersion) print('Set the major version in GitHub Action output: %s' % minorVersion) print('##[set-output name=minor-version;]%s' % minorVersion) print('Set the minor version in GitHub Action output: %s' % majorVersion) print('##[set-output name=major-version;]%s' % majorVersion)