blob: f33e42e17c2e8a0b83ac8f3a8420c3bb6fd4c403 [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
Yaron de Leeuw683c66e2014-11-29 23:17:59 +020013
niemeyer672e2eb2005-02-23 00:04:12 +000014def main():
Yaron de Leeuw683c66e2014-11-29 23:17:59 +020015 with io.open(METADATA_FILE, 'r') as f:
Yaron de Leeuw61118922014-11-24 20:33:36 +020016 metadata = json.load(f)
17
18 if not os.path.isfile(metadata['tzdata_file']):
Yaron de Leeuwd722aad2014-11-20 22:36:52 +020019 print("Downloading tz file from iana")
Yaron de Leeuw683c66e2014-11-29 23:17:59 +020020 request.urlretrieve(os.path.join(metadata['releases_url'],
21 metadata['tzdata_file']),
22 metadata['tzdata_file'])
23 with open(metadata['tzdata_file'], 'rb') as tzfile:
Yaron de Leeuwd722aad2014-11-20 22:36:52 +020024 sha_hasher = hashlib.sha512()
25 sha_hasher.update(tzfile.read())
26 sha_512_file = sha_hasher.hexdigest()
Yaron de Leeuw683c66e2014-11-29 23:17:59 +020027 assert metadata['tzdata_file_sha512'] == sha_512_file, "SHA failed for"
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030028 print("Updating timezone information...")
Yaron de Leeuwa0e85182015-05-25 21:32:10 +030029 rebuild(metadata['tzdata_file'], zonegroups=metadata['zonegroups'],
30 metadata=metadata)
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030031 print("Done.")
niemeyer672e2eb2005-02-23 00:04:12 +000032
33if __name__ == "__main__":
34 main()