Tomi Pieviläinen | 8c6026b | 2013-11-01 10:37:15 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python |
niemeyer | 672e2eb | 2005-02-23 00:04:12 +0000 | [diff] [blame] | 2 | import os |
Yaron de Leeuw | d722aad | 2014-11-20 22:36:52 +0200 | [diff] [blame] | 3 | import hashlib |
Yaron de Leeuw | 6111892 | 2014-11-24 20:33:36 +0200 | [diff] [blame] | 4 | import json |
| 5 | import io |
Yaron de Leeuw | d722aad | 2014-11-20 22:36:52 +0200 | [diff] [blame] | 6 | |
| 7 | from six.moves.urllib import request |
niemeyer | 672e2eb | 2005-02-23 00:04:12 +0000 | [diff] [blame] | 8 | |
Tomi Pieviläinen | e551507 | 2012-03-28 18:04:02 +0300 | [diff] [blame] | 9 | from dateutil.zoneinfo import rebuild |
| 10 | |
Yaron de Leeuw | 6111892 | 2014-11-24 20:33:36 +0200 | [diff] [blame] | 11 | METADATA_FILE = "zonefile_metadata.json" |
niemeyer | 672e2eb | 2005-02-23 00:04:12 +0000 | [diff] [blame] | 12 | |
Yaron de Leeuw | 683c66e | 2014-11-29 23:17:59 +0200 | [diff] [blame] | 13 | |
niemeyer | 672e2eb | 2005-02-23 00:04:12 +0000 | [diff] [blame] | 14 | def main(): |
Yaron de Leeuw | 683c66e | 2014-11-29 23:17:59 +0200 | [diff] [blame] | 15 | with io.open(METADATA_FILE, 'r') as f: |
Yaron de Leeuw | 6111892 | 2014-11-24 20:33:36 +0200 | [diff] [blame] | 16 | metadata = json.load(f) |
| 17 | |
| 18 | if not os.path.isfile(metadata['tzdata_file']): |
Yaron de Leeuw | d722aad | 2014-11-20 22:36:52 +0200 | [diff] [blame] | 19 | print("Downloading tz file from iana") |
Yaron de Leeuw | 683c66e | 2014-11-29 23:17:59 +0200 | [diff] [blame] | 20 | 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 Leeuw | d722aad | 2014-11-20 22:36:52 +0200 | [diff] [blame] | 24 | sha_hasher = hashlib.sha512() |
| 25 | sha_hasher.update(tzfile.read()) |
| 26 | sha_512_file = sha_hasher.hexdigest() |
Yaron de Leeuw | 683c66e | 2014-11-29 23:17:59 +0200 | [diff] [blame] | 27 | assert metadata['tzdata_file_sha512'] == sha_512_file, "SHA failed for" |
Gustavo Niemeyer | ac37a80 | 2011-03-24 14:16:39 -0300 | [diff] [blame] | 28 | print("Updating timezone information...") |
Yaron de Leeuw | 6111892 | 2014-11-24 20:33:36 +0200 | [diff] [blame] | 29 | rebuild(metadata['tzdata_file'], zonegroups=metadata['zonegroups']) |
Gustavo Niemeyer | ac37a80 | 2011-03-24 14:16:39 -0300 | [diff] [blame] | 30 | print("Done.") |
niemeyer | 672e2eb | 2005-02-23 00:04:12 +0000 | [diff] [blame] | 31 | |
| 32 | if __name__ == "__main__": |
| 33 | main() |