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