[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."""
|
---|