Mercurial > hg > PaInt
comparison paint/package.py @ 37:36e70712fc9a
things are just awful
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Fri, 30 Mar 2012 15:06:17 -0700 |
| parents | f59da9e6be37 |
| children | c9d8abb2026f |
comparison
equal
deleted
inserted
replaced
| 36:f59da9e6be37 | 37:36e70712fc9a |
|---|---|
| 53 tmpfile = src = self.fetch() | 53 tmpfile = src = self.fetch() |
| 54 | 54 |
| 55 # unpack if an archive | 55 # unpack if an archive |
| 56 if self._is_archive(src): | 56 if self._is_archive(src): |
| 57 try: | 57 try: |
| 58 self.unpack(src) | 58 self._unpack(src) |
| 59 finally: | 59 finally: |
| 60 if tmpfile: | 60 if tmpfile: |
| 61 os.remove(tmpfile) | 61 os.remove(tmpfile) |
| 62 return self._tmppath | 62 return self._tmppath |
| 63 | 63 |
| 72 resource = urllib2.urlopen(self.src) | 72 resource = urllib2.urlopen(self.src) |
| 73 fp.write(resource.read()) | 73 fp.write(resource.read()) |
| 74 fp.close() | 74 fp.close() |
| 75 return filename | 75 return filename |
| 76 | 76 |
| 77 def unpack(self, archive): | 77 def _unpack(self, archive): |
| 78 """unpack the archive to a temporary destination""" | 78 """unpack the archive to a temporary destination""" |
| 79 # TODO: should handle zipfile additionally at least | 79 # TODO: should handle zipfile additionally at least |
| 80 # Ideally, this would be pluggable, etc | 80 # Ideally, this would be pluggable, etc |
| 81 assert tarfile.is_tarfile(archive), "%s is not an archive" % self.src | 81 assert tarfile.is_tarfile(archive), "%s is not an archive" % self.src |
| 82 tf = tarfile.TarFile.open(archive) | 82 tf = tarfile.TarFile.open(archive) |
| 83 self._tmppath = tempfile.mkdtemp() | 83 self._tmppath = tempfile.mkdtemp() |
| 84 members = tf.getmembers() | 84 members = tf.getmembers() |
| 85 | 85 |
| 86 # cut off the top level directory | 86 # cut off the top level directory |
| 87 assert not [i for i in members if not os.path.sep in i.name] | 87 members = [i for i in members if os.path.sep in i.name] |
| 88 tld = set() | 88 tld = set() |
| 89 for member in members: | 89 for member in members: |
| 90 directory, member.name = member.name.split(os.path.sep, 1) | 90 directory, member.name = member.name.split(os.path.sep, 1) |
| 91 tld.add(directory) | 91 tld.add(directory) |
| 92 assert len(tld) == 1 | 92 assert len(tld) == 1 |
