blob: 415b8c35007a07ce70f36e238315d17044f7e12f [file] [log] [blame]
Tomi Pieviläinen40996e02012-03-03 11:43:08 +02001#!/usr/bin/python
niemeyer672e2eb2005-02-23 00:04:12 +00002from dateutil.zoneinfo import rebuild
3import shutil
4import sys
5import os
6import re
7
8SERVER = "elsie.nci.nih.gov"
9DIR = "/pub"
10NAME = 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()