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
64 lines
1.5 KiB
4 months ago
|
#!/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)
|
||
|
|