aboutsummaryrefslogtreecommitdiff
path: root/scripts/update-release.py.in
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/update-release.py.in')
-rw-r--r--scripts/update-release.py.in62
1 files changed, 62 insertions, 0 deletions
diff --git a/scripts/update-release.py.in b/scripts/update-release.py.in
new file mode 100644
index 0000000..95350c9
--- /dev/null
+++ b/scripts/update-release.py.in
@@ -0,0 +1,62 @@
1@PYTHON@
2# vim: set ts=4 et:
3
4import json
5import os
6import re
7import sys
8import yaml
9
10if len(sys.argv) != 3:
11 sys.exit("Usage: " + os.path.basename(__file__) + " <profile> <build>")
12
13PROFILE = sys.argv[1]
14BUILD = sys.argv[2]
15
16SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
17MANIFEST_JSON = os.path.join(
18 SCRIPT_DIR, 'profile', PROFILE, BUILD, 'manifest.json'
19)
20
21RELEASE_DIR = os.path.join(SCRIPT_DIR, '..', 'releases')
22RELEASE_YAML = os.path.join(RELEASE_DIR, PROFILE + '.yaml')
23
24if not os.path.exists(RELEASE_DIR):
25 os.makedirs(RELEASE_DIR)
26
27releases = {}
28if os.path.exists(RELEASE_YAML):
29 with open(RELEASE_YAML, 'r') as data:
30 releases = yaml.safe_load(data)
31
32with open(MANIFEST_JSON, 'r') as data:
33 MANIFEST = json.load(data)
34
35A = re.split(':|,', MANIFEST['builds'][0]['artifact_id'])
36ARTIFACTS = dict(zip(A[0::2], A[1::2]))
37BUILD_TIME = MANIFEST['builds'][0]['build_time']
38DATA = MANIFEST['builds'][0]['custom_data']
39RELEASE = DATA['release']
40
41if BUILD not in releases:
42 releases[BUILD] = {}
43if RELEASE not in releases[BUILD]:
44 releases[BUILD][RELEASE] = {}
45
46REVISION = {
47 'description': DATA['ami_desc'],
48 'profile': PROFILE,
49 'profile_build': BUILD,
50 'version': DATA['version'],
51 'release': RELEASE,
52 'arch': DATA['arch'],
53 'revision': DATA['revision'],
54 'end_of_life': DATA['end_of_life'],
55 'build_time': BUILD_TIME,
56 'artifacts': ARTIFACTS
57}
58
59releases[BUILD][RELEASE][DATA['ami_name']] = REVISION
60
61with open(RELEASE_YAML, 'w') as data:
62 yaml.dump(releases, data, sort_keys=False)