diff options
Diffstat (limited to 'ci_tools/make_zonefile_metadata.py')
-rwxr-xr-x | ci_tools/make_zonefile_metadata.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/ci_tools/make_zonefile_metadata.py b/ci_tools/make_zonefile_metadata.py new file mode 100755 index 0000000..39bd551 --- /dev/null +++ b/ci_tools/make_zonefile_metadata.py @@ -0,0 +1,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) + |