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)