#!/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)