-
Notifications
You must be signed in to change notification settings - Fork 2
/
generate_build_information.py
53 lines (42 loc) · 1.37 KB
/
generate_build_information.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import os
import re
import time
import git
# Autogenerated filename
GUI_GENERIC_CODE = os.path.join(
os.path.dirname(__file__),
'gui_anonymiser_main.py',
)
def generate_version_information():
""" Generate the version token and the date taken for this repository. """
# Get repo information
try:
repo = git.Repo(search_parent_directories=True)
sha = repo.head.object.hexsha
except Exception:
sha = 'none'
date = time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime())
return date, sha
if __name__ == '__main__':
if os.path.exists(GUI_GENERIC_CODE):
date, sha = generate_version_information()
parameter_values_dict = {'BUILD_DATE': date, 'COMMIT_HASH': sha}
# Read the GUI ui script
content = open(GUI_GENERIC_CODE, 'r').read()
# Substitute the placeholders
content_modified = re.sub(
r"<(\w+?)>",
lambda match: parameter_values_dict[match.group(1)],
content,
)
# Overwrite the GUI ui script
open(GUI_GENERIC_CODE, 'w').write(content_modified)
if content_modified != content:
print('{0}:'.format(__file__), 'Build version has been written.')
else:
print(
'{0}:'.format(__file__), 'The content has not been modified.'
)
exit(2)
else:
exit(1)