aboutsummaryrefslogtreecommitdiff
path: root/ci_tools/make_zonefile_metadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'ci_tools/make_zonefile_metadata.py')
-rwxr-xr-xci_tools/make_zonefile_metadata.py63
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)
+