comparison paint/package.py @ 36:f59da9e6be37

this almost works, dammit
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 30 Mar 2012 14:44:12 -0700
parents e8d73f9e99fb
children 36e70712fc9a
comparison
equal deleted inserted replaced
35:e8d73f9e99fb 36:f59da9e6be37
1 """ 1 """
2 package model for python PAckage INTrospection 2 package model for python PAckage INTrospection
3 """ 3 """
4
5 # TODO: use pkginfo.sdist more
4 6
5 import os 7 import os
6 import pip 8 import pip
7 import pypi 9 import pypi
8 import shutil 10 import shutil
189 package = self.package() 191 package = self.package()
190 192
191 # determine the extension (XXX hacky) 193 # determine the extension (XXX hacky)
192 extensions = ('.tar.gz', '.zip', '.tar.bz2') 194 extensions = ('.tar.gz', '.zip', '.tar.bz2')
193 for ext in extensions: 195 for ext in extensions:
194 if package.endsiwth(ext): 196 if package.endswith(ext):
195 return ext 197 return ext
196 198
197 raise Exception("Extension %s not found: %s" % (extensions, package)) 199 raise Exception("Extension %s not found: %s" % (extensions, package))
198 200
199 def package(self, destination=None): 201 def package(self, destination=None):
224 226
225 self._build_path = os.path.join(dist, contents[0]) 227 self._build_path = os.path.join(dist, contents[0])
226 228
227 # destination 229 # destination
228 # use an evil recursive trick 230 # use an evil recursive trick
229 return self.repackage(destination=destination)
230 if destination: 231 if destination:
231 shutil.copy(self._build_path, destination) 232 return self.package(destination=destination)
232 return destination
233 233
234 return self._build_path 234 return self._build_path
235 235
236 def download(self, directory): 236 def download(self, directory):
237 """download a package and all its dependencies using pip""" 237 """download a package and all its dependencies using pip"""
257 src = os.path.join(tempdir, package) 257 src = os.path.join(tempdir, package)
258 258
259 # make a package of the thing 259 # make a package of the thing
260 package = Package(src) 260 package = Package(src)
261 261
262 # # get destination dirname, filename 262 # get destination dirname, filename
263 # try: 263 dirname, filename = package.pypi_path()
264 # dirname, filename = pypi.pypi_path(src) 264
265 # except ValueError: 265 # make the directory if it doesn't exist
266 # # PKG-INFO not found 266 subdir = os.path.join(directory, dirname)
267 # pass # TODO 267 if not os.path.exists(subdir):
268 268 os.makedirs(subdir)
269 # # make the directory if it doesn't exist 269 assert os.path.isdir(subdir)
270 # subdir = os.path.join(directory, dirname) 270
271 # if not os.path.exists(subdir): 271 # move the file
272 # os.makedirs(subdir) 272 self.package(destination=os.path.join(subdir, filename))
273 # assert os.path.isdir(subdir)
274
275 # # move the file
276 # shutil.move(src, os.path.join(subdir, filename))
277 finally: 273 finally:
278 shutil.rmtree(tempdir) 274 shutil.rmtree(tempdir)
279 275
280 def pypi_path(self, path): 276 def pypi_path(self):
281 """ 277 """
282 returns subpath 2-tuple appropriate for pypi path structure: 278 returns subpath 2-tuple appropriate for pypi path structure:
283 http://k0s.org/portfolio/pypi.html 279 http://k0s.org/portfolio/pypi.html
284 """ 280 """
285 info = self.info() 281 info = self.info()
286 # sdist = pkginfo.sdist.SDist(path) 282
287 283 # determine the extension
288 # determine the extension (XXX hacky) 284 extension = self.extension()
289 extensions = ('.tar.gz', '.zip', '.tar.bz2')
290 for ext in extensions:
291 import pdb; pdb.set_trace()
292 if sdist.filename.endswith(ext):
293 break
294 else:
295
296 285
297 # get the filename destination 286 # get the filename destination
298 filename = '%s-%s%s' % (info['name'], ext) 287 name = info['Name']
299 return sdist.name, filename 288 version = info['Version']
289 filename = '%s-%s%s' % (name, version, extension)
290 return name, filename