aboutsummaryrefslogtreecommitdiff
path: root/scripts/update-release.py.in
blob: 95350c9dfdc5abb36cfc4df3c7a68c8e8dd4291f (plain)
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
54
55
56
57
58
59
60
61
62
@PYTHON@
# vim: set ts=4 et:

import json
import os
import re
import sys
import yaml

if len(sys.argv) != 3:
    sys.exit("Usage: " + os.path.basename(__file__) + " <profile> <build>")

PROFILE = sys.argv[1]
BUILD = sys.argv[2]

SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
MANIFEST_JSON = os.path.join(
    SCRIPT_DIR, 'profile', PROFILE, BUILD, 'manifest.json'
)

RELEASE_DIR = os.path.join(SCRIPT_DIR, '..', 'releases')
RELEASE_YAML = os.path.join(RELEASE_DIR, PROFILE + '.yaml')

if not os.path.exists(RELEASE_DIR):
    os.makedirs(RELEASE_DIR)

releases = {}
if os.path.exists(RELEASE_YAML):
    with open(RELEASE_YAML, 'r') as data:
        releases = yaml.safe_load(data)

with open(MANIFEST_JSON, 'r') as data:
    MANIFEST = json.load(data)

A = re.split(':|,', MANIFEST['builds'][0]['artifact_id'])
ARTIFACTS = dict(zip(A[0::2], A[1::2]))
BUILD_TIME = MANIFEST['builds'][0]['build_time']
DATA = MANIFEST['builds'][0]['custom_data']
RELEASE = DATA['release']

if BUILD not in releases:
    releases[BUILD] = {}
if RELEASE not in releases[BUILD]:
    releases[BUILD][RELEASE] = {}

REVISION = {
    'description': DATA['ami_desc'],
    'profile': PROFILE,
    'profile_build': BUILD,
    'version': DATA['version'],
    'release': RELEASE,
    'arch': DATA['arch'],
    'revision': DATA['revision'],
    'end_of_life': DATA['end_of_life'],
    'build_time': BUILD_TIME,
    'artifacts': ARTIFACTS
}

releases[BUILD][RELEASE][DATA['ami_name']] = REVISION

with open(RELEASE_YAML, 'w') as data:
    yaml.dump(releases, data, sort_keys=False)