Files
create/src/Tools/ArchiveNameFromVersionHeader.py
Chris Hennes e2bb84fd2f [Tools] Fix static analyis issues
This commit addresses issues identified by LGTM for the various
independent (and mostly-independent) files in the Tools subdirectory.
The vast majority of the issues are trivial, and are things like unused
imports or catching BaseException. There was one true bug identified, a
global variable being changed in a function where it was not marked
global, but it only affected output quantity (the variable is named
"VERBOSE"). A couple of other issues identified variables that appear to
represent no-longer-existing options in the code. The options were left,
but a deprecation printout replaces the variable in the event the option
is provided.
2021-02-28 17:53:04 +01:00

54 lines
1.5 KiB
Python

#! python
###
# 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()