blob: ade4d05f4f21aa7e2a9cd428abc5dec92002ba7e [file] [log] [blame]
Tomi Pieviläinen8c6026b2013-11-01 10:37:15 +02001#!/usr/bin/env python
niemeyer672e2eb2005-02-23 00:04:12 +00002import os
Yaron de Leeuwd722aad2014-11-20 22:36:52 +02003import hashlib
Yaron de Leeuw61118922014-11-24 20:33:36 +02004import json
5import io
Yaron de Leeuwd722aad2014-11-20 22:36:52 +02006
7from six.moves.urllib import request
niemeyer672e2eb2005-02-23 00:04:12 +00008
Tomi Pieviläinene5515072012-03-28 18:04:02 +03009from dateutil.zoneinfo import rebuild
10
Yaron de Leeuw61118922014-11-24 20:33:36 +020011METADATA_FILE = "zonefile_metadata.json"
niemeyer672e2eb2005-02-23 00:04:12 +000012
13def main():
Yaron de Leeuw61118922014-11-24 20:33:36 +020014 with io.open(METADATA_FILE,'r') as f:
15 metadata = json.load(f)
16
17 if not os.path.isfile(metadata['tzdata_file']):
Yaron de Leeuwd722aad2014-11-20 22:36:52 +020018 print("Downloading tz file from iana")
Yaron de Leeuw61118922014-11-24 20:33:36 +020019 request.urlretrieve(os.path.join(metadata['releases_url'],metadata['tzdata_file']), metadata['tzdata_file'])
20 with open(metadata['tzdata_file'],'rb') as tzfile:
Yaron de Leeuwd722aad2014-11-20 22:36:52 +020021 sha_hasher = hashlib.sha512()
22 sha_hasher.update(tzfile.read())
23 sha_512_file = sha_hasher.hexdigest()
Yaron de Leeuw61118922014-11-24 20:33:36 +020024 assert metadata['tzdata_file_sha512'] == sha_512_file, "SHA failed for downloaded tz file"
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030025 print("Updating timezone information...")
Yaron de Leeuw61118922014-11-24 20:33:36 +020026 rebuild(metadata['tzdata_file'], zonegroups=metadata['zonegroups'])
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030027 print("Done.")
niemeyer672e2eb2005-02-23 00:04:12 +000028
29if __name__ == "__main__":
30 main()