blob: 46b3cf7833e0990b9725fd445a3790c33f9504eb [file] [log] [blame]
Tomi Pieviläinen40996e02012-03-03 11:43:08 +02001#!/usr/bin/python
niemeyer672e2eb2005-02-23 00:04:12 +00002import os
3import re
Tomi Pieviläinene5515072012-03-28 18:04:02 +03004import sys
niemeyer672e2eb2005-02-23 00:04:12 +00005
Tomi Pieviläinene5515072012-03-28 18:04:02 +03006from dateutil.zoneinfo import rebuild
7
8SERVER = "ftp.iana.org"
9DIR = "/tz"
niemeyer672e2eb2005-02-23 00:04:12 +000010NAME = re.compile("tzdata(.*).tar.gz")
11
12def main():
13 if len(sys.argv) == 2:
14 tzdata = sys.argv[1]
15 else:
16 from ftplib import FTP
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030017 print("Connecting to %s..." % SERVER)
niemeyer672e2eb2005-02-23 00:04:12 +000018 ftp = FTP(SERVER)
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030019 print("Logging in...")
niemeyer672e2eb2005-02-23 00:04:12 +000020 ftp.login()
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030021 print("Changing to %s..." % DIR)
niemeyer672e2eb2005-02-23 00:04:12 +000022 ftp.cwd(DIR)
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030023 print("Listing files...")
niemeyer672e2eb2005-02-23 00:04:12 +000024 for name in ftp.nlst():
25 if NAME.match(name):
26 break
27 else:
28 sys.exit("error: file matching %s not found" % NAME.pattern)
29 if os.path.isfile(name):
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030030 print("Found local %s..." % name)
niemeyer672e2eb2005-02-23 00:04:12 +000031 else:
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030032 print("Retrieving %s..." % name)
niemeyer672e2eb2005-02-23 00:04:12 +000033 file = open(name, "w")
34 ftp.retrbinary("RETR "+name, file.write)
35 file.close()
36 ftp.close()
37 tzdata = name
38 if not tzdata or not NAME.match(tzdata):
39 sys.exit("Usage: updatezinfo.py tzdataXXXXX.tar.gz")
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030040 print("Updating timezone information...")
niemeyer672e2eb2005-02-23 00:04:12 +000041 rebuild(tzdata, NAME.match(tzdata).group(1))
Gustavo Niemeyerac37a802011-03-24 14:16:39 -030042 print("Done.")
niemeyer672e2eb2005-02-23 00:04:12 +000043
44if __name__ == "__main__":
45 main()