aboutsummaryrefslogtreecommitdiff
path: root/ci_tools/make_zonefile_metadata.py
blob: 39bd551ee2c34f85524075d551c2558b1bd3f4c2 (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
63
#!/usr/bin/env python3

import hashlib

ZONEFILE_METADATA_TEMPLATE = """{{
    "metadata_version": 2.0,
    "releases_url": [],
    "tzdata_file": "{tzdata_file}",
    "tzdata_file_sha512": "{tzdata_sha512}",
    "tzversion": "{tzdata_version}",
    "zonegroups": [
        "africa",
        "antarctica",
        "asia",
        "australasia",
        "europe",
        "northamerica",
        "southamerica",
        "pacificnew",
        "etcetera",
        "systemv",
        "factory",
        "backzone",
        "backward"
    ]
}}
"""


def calculate_sha512(fpath):
    with open(fpath, 'rb') as f:
        sha_hasher = hashlib.sha512()
        sha_hasher.update(f.read())
        return sha_hasher.hexdigest()


if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser()

    parser.add_argument('tzdata', metavar='TZDATA',
                        help='The name tzdata tarball file')
    parser.add_argument('version', metavar='VERSION',
                        help='The version of the tzdata tarball')
    parser.add_argument('out', metavar='OUT', nargs='?',
                        default='zonefile_metadata.json',
                        help='Where to write the file')

    args = parser.parse_args()

    tzdata = args.tzdata
    version = args.version
    sha512 = calculate_sha512(tzdata)

    metadata_file_text = ZONEFILE_METADATA_TEMPLATE.format(
        tzdata_file=tzdata,
        tzdata_version=version,
        tzdata_sha512=sha512,
    )

    with open(args.out, 'w') as f:
        f.write(metadata_file_text)