Mercurial > hg > PaInt
comparison paint/package.py @ 31:5fb1844db0b2
back to the drawring broad
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Fri, 30 Mar 2012 13:38:33 -0700 |
parents | fe5f282dca9b |
children | f2e31ac03bb3 |
comparison
equal
deleted
inserted
replaced
30:fe5f282dca9b | 31:5fb1844db0b2 |
---|---|
28 | 28 |
29 # ephemeral data | 29 # ephemeral data |
30 self._tmppath = None | 30 self._tmppath = None |
31 self._egg_info_path = None | 31 self._egg_info_path = None |
32 | 32 |
33 # TODO: list of temporary files/directories to be deleted | |
34 | |
33 def path(self): | 35 def path(self): |
34 """filesystem path to package""" | 36 """filesystem path to package directory""" |
35 | 37 |
36 # return cached copy if it exists | 38 # return cached copy if it exists |
37 if self._tmppath: | 39 if self._tmppath: |
38 return self._tmppath | 40 return self._tmppath |
39 | 41 |
52 os.remove(tmpfile) | 54 os.remove(tmpfile) |
53 return self._tmppath | 55 return self._tmppath |
54 | 56 |
55 return self.src | 57 return self.src |
56 | 58 |
57 def fetch(self): | 59 def fetch(self, filename=None): |
58 """fetch from remote source to a temporary file""" | 60 """fetch from remote source to a temporary file""" |
61 if filename is None: | |
62 fd, filename = tempfile.mkstemp() | |
63 os.close(fd) | |
64 fp = file(filename, 'w') | |
59 resource = urllib2.urlopen(self.src) | 65 resource = urllib2.urlopen(self.src) |
60 fd, filename = tempfile.mkstemp() | 66 fp.write(resource.read()) |
61 os.write(fd, resource.read()) | 67 fp.close() |
62 os.close(fd) | |
63 return filename | 68 return filename |
64 | 69 |
65 def unpack(self, archive): | 70 def unpack(self, archive): |
66 """unpack the archive to a temporary destination""" | 71 """unpack the archive to a temporary destination""" |
67 # TODO: should handle zipfile additionally at least | 72 # TODO: should handle zipfile additionally at least |
169 if dep in dependencies: | 174 if dep in dependencies: |
170 dependencies[dep] = link | 175 dependencies[dep] = link |
171 | 176 |
172 return dependencies | 177 return dependencies |
173 | 178 |
179 def extension(self): | |
180 """filename extension""" | |
181 | |
182 def repackage(self): | |
183 """ | |
184 repackage the package to ensure its actually in the right form | |
185 """ | |
186 | |
174 def download(self, directory): | 187 def download(self, directory): |
175 """download a package and all its dependencies using pip""" | 188 """download a package and all its dependencies using pip""" |
176 if not os.path.exists(directory): | 189 if not os.path.exists(directory): |
177 os.makedirs(directory) | 190 os.makedirs(directory) |
178 assert os.path.isdir(directory) | 191 assert os.path.isdir(directory) |
192 for package in os.listdir(tempdir): | 205 for package in os.listdir(tempdir): |
193 | 206 |
194 # full path | 207 # full path |
195 src = os.path.join(tempdir, package) | 208 src = os.path.join(tempdir, package) |
196 | 209 |
197 # get destination dirname, filename | 210 package = Package(src) |
198 dirname, filename = pypi.pypi_path(src) | 211 |
199 | 212 # # get destination dirname, filename |
200 # make the directory if it doesn't exist | 213 # try: |
201 subdir = os.path.join(directory, dirname) | 214 # dirname, filename = pypi.pypi_path(src) |
202 if not os.path.exists(subdir): | 215 # except ValueError: |
203 os.makedirs(subdir) | 216 # # PKG-INFO not found |
204 assert os.path.isdir(subdir) | 217 # pass # TODO |
205 | 218 |
206 # move the file | 219 # # make the directory if it doesn't exist |
207 shutil.move(src, os.path.join(subdir, filename)) | 220 # subdir = os.path.join(directory, dirname) |
221 # if not os.path.exists(subdir): | |
222 # os.makedirs(subdir) | |
223 # assert os.path.isdir(subdir) | |
224 | |
225 # # move the file | |
226 # shutil.move(src, os.path.join(subdir, filename)) | |
208 finally: | 227 finally: |
209 shutil.rmtree(tempdir) | 228 shutil.rmtree(tempdir) |
229 | |
230 def pypi_path(self, path): | |
231 """ | |
232 returns subpath 2-tuple appropriate for pypi path structure: | |
233 http://k0s.org/portfolio/pypi.html | |
234 """ | |
235 info = self.info() | |
236 # sdist = pkginfo.sdist.SDist(path) | |
237 | |
238 # determine the extension (XXX hacky) | |
239 extensions = ('.tar.gz', '.zip', '.tar.bz2') | |
240 for ext in extensions: | |
241 import pdb; pdb.set_trace() | |
242 if sdist.filename.endswith(ext): | |
243 break | |
244 else: | |
245 raise Exception("Extension %s not found: %s" % (extensions, sdist.filename)) | |
246 | |
247 # get the filename destination | |
248 filename = '%s-%s%s' % (info['name'], ext) | |
249 return sdist.name, filename |