home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2413 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  4.6 KB  |  85 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from setuptools import Command
  5. from setuptools.archive_util import unpack_archive
  6. from distutils import log, dir_util
  7. import os
  8. import shutil
  9. import pkg_resources
  10.  
  11. class install_egg_info(Command):
  12.     description = 'Install an .egg-info directory for the package'
  13.     user_options = [
  14.         ('install-dir=', 'd', 'directory to install to')]
  15.     
  16.     def initialize_options(self):
  17.         self.install_dir = None
  18.  
  19.     
  20.     def finalize_options(self):
  21.         self.set_undefined_options('install_lib', ('install_dir', 'install_dir'))
  22.         ei_cmd = self.get_finalized_command('egg_info')
  23.         basename = pkg_resources.Distribution(None, None, ei_cmd.egg_name, ei_cmd.egg_version).egg_name() + '.egg-info'
  24.         self.source = ei_cmd.egg_info
  25.         self.target = os.path.join(self.install_dir, basename)
  26.         self.outputs = [
  27.             self.target]
  28.  
  29.     
  30.     def run(self):
  31.         self.run_command('egg_info')
  32.         target = self.target
  33.         if os.path.isdir(self.target) and not os.path.islink(self.target):
  34.             dir_util.remove_tree(self.target, dry_run = self.dry_run)
  35.         elif os.path.exists(self.target):
  36.             self.execute(os.unlink, (self.target,), 'Removing ' + self.target)
  37.         
  38.         if not self.dry_run:
  39.             pkg_resources.ensure_directory(self.target)
  40.         
  41.         self.execute(self.copytree, (), 'Copying %s to %s' % (self.source, self.target))
  42.         self.install_namespaces()
  43.  
  44.     
  45.     def get_outputs(self):
  46.         return self.outputs
  47.  
  48.     
  49.     def copytree(self):
  50.         
  51.         def skimmer(src, dst):
  52.             for skip in ('.svn/', 'CVS/'):
  53.                 if src.startswith(skip) or '/' + skip in src:
  54.                     return None
  55.             
  56.             self.outputs.append(dst)
  57.             log.debug('Copying %s to %s', src, dst)
  58.             return dst
  59.  
  60.         unpack_archive(self.source, self.target, skimmer)
  61.  
  62.     
  63.     def install_namespaces(self):
  64.         nsp = self._get_all_ns_packages()
  65.         if not nsp:
  66.             return None
  67.         (filename, ext) = os.path.splitext(self.target)
  68.         filename += '-nspkg.pth'
  69.         self.outputs.append(filename)
  70.         log.info('Installing %s', filename)
  71.  
  72.     
  73.     def _get_all_ns_packages(self):
  74.         nsp = { }
  75.         for pkg in []:
  76.             pkg = pkg.split('.')
  77.             while pkg:
  78.                 nsp['.'.join(pkg)] = 1
  79.                 pkg.pop()
  80.         nsp = list(nsp)
  81.         nsp.sort()
  82.         return nsp
  83.  
  84.  
  85.