Was split out of #1885...
```
./src/Tools/ArchiveNameFromVersionHeader.py:41:34: E999 TabError: inconsistent use of tabs and spaces in indentation
version['FCRepositoryHash'] = SHA
^
```
54 lines
1.5 KiB
Python
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,string,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()
|
|
|