FreeCAD / src /Tools /ArchiveNameFromVersionHeader.py
AbdulElahGwaith's picture
Upload folder using huggingface_hub
985c397 verified
#! python
# SPDX-License-Identifier: LGPL-2.1-or-later
###
# A convenience script to generate a deployment archive name of the form
# FreeCAD_{Major Version Number}.{Minor Version Number}-{Git Revision Count}.{Git Short SHA}-{OS}-{Arch}
#
import sys, getopt, platform
def deserializeVersionHeader(path):
version = {}
try:
dat = open(path, "r").readlines()
except IOError:
print("Unable to open ", path)
raise
for l in dat:
tokens = l.split()
if len(tokens) > 1 and tokens[0].lower() == "#define":
version[tokens[1]] = tokens[2].replace('"', "")
return version
def main():
OSAbbrev = {"Windows": "WIN", "Darwin": "OSX"}
SHA = None
if len(sys.argv) < 2:
sys.stderr.write("Usage: archiveNameFromVersion <path to Version.h> [--git-SHA=]\n")
try:
opts, args = getopt.getopt(sys.argv[2:], "g:", ["git-SHA="])
except getopt.GetoptError:
pass
for o, a in opts:
if o in ("-g", "--git-SHA"):
SHA = a
version = deserializeVersionHeader(sys.argv[1])
if SHA:
version["FCRepositoryHash"] = SHA
print(
"FreeCAD_{Major}.{Minor}-{RevCount}.{GitShortSHA}-{OS}-{Arch}".format(
Major=version["FCVersionMajor"],
Minor=version["FCVersionMinor"],
RevCount=version["FCRevision"],
GitShortSHA=version["FCRepositoryHash"][0:7],
OS=OSAbbrev.get(platform.system(), "LIN"),
Arch=platform.machine(),
)
)
if __name__ == "__main__":
main()