You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.5 KiB

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