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 |
| 4 | |
| 5 | from six.moves.urllib import request |
niemeyer | 672e2eb | 2005-02-23 00:04:12 +0000 | [diff] [blame] | 6 | |
Tomi Pieviläinen | e551507 | 2012-03-28 18:04:02 +0300 | [diff] [blame] | 7 | from dateutil.zoneinfo import rebuild |
| 8 | |
Yaron de Leeuw | d722aad | 2014-11-20 22:36:52 +0200 | [diff] [blame] | 9 | |
| 10 | # ad-hoc solution. TODO: use configuration file or something |
| 11 | TZRELEASES = "ftp://ftp.iana.org/tz/releases/" |
| 12 | TZFILEPATTERN = "tzdata{tag}.tar.gz" |
| 13 | TZTAG = "2014j" |
| 14 | SHA512 = "4c2979be3a96f91f8576304ec905d571b73df0842c8300c1d7317819b45ab3e29948ed911aa265b12a4ad587d5cba44f646dd02e40e4fbf9e68556a2d327142e" |
| 15 | |
| 16 | TZFILE = TZFILEPATTERN.format(tag=TZTAG) |
niemeyer | 672e2eb | 2005-02-23 00:04:12 +0000 | [diff] [blame] | 17 | |
| 18 | def main(): |
Yaron de Leeuw | d722aad | 2014-11-20 22:36:52 +0200 | [diff] [blame] | 19 | if not os.path.isfile(TZFILE): |
| 20 | print("Downloading tz file from iana") |
| 21 | request.urlretrieve(TZRELEASES + TZFILE, TZFILE) |
| 22 | with open(TZFILE,'rb') as tzfile: |
| 23 | sha_hasher = hashlib.sha512() |
| 24 | sha_hasher.update(tzfile.read()) |
| 25 | sha_512_file = sha_hasher.hexdigest() |
| 26 | assert SHA512 == sha_512_file, "SHA failed for downloaded tz file" |
Gustavo Niemeyer | ac37a80 | 2011-03-24 14:16:39 -0300 | [diff] [blame] | 27 | print("Updating timezone information...") |
Yaron de Leeuw | d722aad | 2014-11-20 22:36:52 +0200 | [diff] [blame] | 28 | rebuild(TZFILE, TZTAG) |
Gustavo Niemeyer | ac37a80 | 2011-03-24 14:16:39 -0300 | [diff] [blame] | 29 | print("Done.") |
niemeyer | 672e2eb | 2005-02-23 00:04:12 +0000 | [diff] [blame] | 30 | |
| 31 | if __name__ == "__main__": |
| 32 | main() |