| [1179] | 1 | #!/usr/bin/env python | 
|---|
|  | 2 | import urllib2 | 
|---|
|  | 3 | import os | 
|---|
|  | 4 | import tarfile | 
|---|
|  | 5 |  | 
|---|
|  | 6 | import shutil | 
|---|
|  | 7 |  | 
|---|
|  | 8 | name = 'asap_data.tar.bz2' | 
|---|
|  | 9 | dataurl  = "http://www.atnf.csiro.au/pub/software/asap/data/" | 
|---|
|  | 10 | tmpdata = '/tmp/asap_data.tar.bz2' | 
|---|
|  | 11 | tmpmd5 = tmpdata+'.md5sum' | 
|---|
|  | 12 |  | 
|---|
| [1180] | 13 | print "Checking if an update is required." | 
|---|
| [1179] | 14 | md5req = urllib2.Request(dataurl+name+'.md5sum') | 
|---|
|  | 15 | response = urllib2.urlopen(md5req) | 
|---|
|  | 16 | md5file = file(tmpmd5,'w') | 
|---|
|  | 17 | md5file.write(response.read()) | 
|---|
|  | 18 | md5file.close() | 
|---|
|  | 19 | md5file = file(tmpmd5) | 
|---|
|  | 20 | md5new = md5file.readlines()[0].split()[0] | 
|---|
|  | 21 |  | 
|---|
| [1180] | 22 | # use ASAPDATA if set - allows non-root update | 
|---|
|  | 23 | if os.environ.has_key("ASAPDATA"): | 
|---|
|  | 24 | asapbase = os.environ["ASAPDATA"] | 
|---|
| [1183] | 25 | else: | 
|---|
|  | 26 | import asap | 
|---|
|  | 27 | # get asap module path | 
|---|
|  | 28 | asapbase = asap.__path__[0] | 
|---|
| [1179] | 29 | try: | 
|---|
|  | 30 | fl = os.path.join(asapbase, name+".md5sum") | 
|---|
|  | 31 | data_md5 = file(fl) | 
|---|
|  | 32 | ls = data_md5.readlines()[0] | 
|---|
|  | 33 | data_md5.close() | 
|---|
|  | 34 | md5old = ls.split()[0] | 
|---|
|  | 35 | except IOError: | 
|---|
|  | 36 | md5old ='' | 
|---|
|  | 37 |  | 
|---|
|  | 38 | if md5new != md5old: | 
|---|
|  | 39 | dreq = urllib2.Request(dataurl+name) | 
|---|
|  | 40 | src = urllib2.urlopen(dreq) | 
|---|
| [1180] | 41 | print "Update required. Downloading asap data archive...." | 
|---|
| [1179] | 42 | dst = open(tmpdata, 'w') | 
|---|
|  | 43 | dst.write(src.read()) | 
|---|
|  | 44 | dst.close() | 
|---|
|  | 45 | os.chdir(asapbase) | 
|---|
|  | 46 | tf = tarfile.TarFile.bz2open(tmpdata) | 
|---|
|  | 47 | print "Extracting data archive in %s.." % asapbase | 
|---|
|  | 48 | for member in tf.getmembers(): | 
|---|
|  | 49 | tf.extract(member) | 
|---|
|  | 50 | shutil.copy(tmpmd5, asapbase) | 
|---|
|  | 51 | else: | 
|---|
|  | 52 | print """Data already at latest available version. | 
|---|
|  | 53 | If you still get errors running asap, please report this.""" | 
|---|