Mercurial > hg > PaInt
comparison paint/package.py @ 8:c1181e9c9ca2
yet more stubbing
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Thu, 23 Feb 2012 17:45:47 -0800 |
| parents | a7bf894c96c7 |
| children | 562230cc2e86 |
comparison
equal
deleted
inserted
replaced
| 7:a7bf894c96c7 | 8:c1181e9c9ca2 |
|---|---|
| 24 | 24 |
| 25 # fetch from the web if a URL | 25 # fetch from the web if a URL |
| 26 tmpfile = None | 26 tmpfile = None |
| 27 src = self.src | 27 src = self.src |
| 28 if utils.isURL(self.src): | 28 if utils.isURL(self.src): |
| 29 tmpfile = self.fetch() | 29 tmpfile = src = self.fetch() |
| 30 return self._tmppath | |
| 31 | 30 |
| 32 # unpack if an archive | 31 # unpack if an archive |
| 33 if self.is_archive(src): | 32 if self.is_archive(src): |
| 34 self.unpack(src) | 33 try: |
| 34 self.unpack(src) | |
| 35 finally: | |
| 36 if tmpfile: | |
| 37 os.remove(tmpfile) | |
| 35 return self._tmppath | 38 return self._tmppath |
| 36 | 39 |
| 37 return self.src | 40 return self.src |
| 38 | 41 |
| 39 def fetch(self): | 42 def fetch(self): |
| 40 """fetch from remote source""" | 43 """fetch from remote source to a temporary file""" |
| 41 | |
| 42 fd, filename = tmpfile.mkstemp() | 44 fd, filename = tmpfile.mkstemp() |
| 43 resource = urllib.urlopen(self.src) | 45 resource = urllib.urlopen(self.src) |
| 44 os.write(fd, resource.read()) | 46 os.write(fd, resource.read()) |
| 45 os.close(fd) | 47 os.close(fd) |
| 46 return filename | 48 return filename |
| 47 | 49 |
| 48 def unpack(self, archive): | 50 def unpack(self, archive): |
| 49 """unpack the archive to a temporary destination""" | 51 """unpack the archive to a temporary destination""" |
| 50 # TODO: should handle zipfile additionally at least | 52 # TODO: should handle zipfile additionally at least |
| 51 # Ideally, this would be pluggable, etc | 53 # Ideally, this would be pluggable, etc |
| 52 assert tarfile.is_tarfile | 54 assert tarfile.is_tarfile(archive), "%s is not an archive" % self.src |
| 53 tarfile.TarFile.open( | 55 tarfile.TarFile.open(archive) |
| 54 | 56 |
| 55 def is_archive(self, path): | 57 def is_archive(self, path): |
| 56 """returns if the filesystem path is an archive""" | 58 """returns if the filesystem path is an archive""" |
| 57 # TODO: should handle zipfile additionally at least | 59 # TODO: should handle zipfile additionally at least |
| 58 # Ideally, this would be pluggable, etc | 60 # Ideally, this would be pluggable, etc |
