home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 June / maximum-cd-2011-06.iso / DiscContents / LibO_3.3.1_Win_x86_install_multi.exe / libreoffice1.cab / install_egg_info.py < prev    next >
Encoding:
Python Source  |  2011-02-15  |  2.5 KB  |  79 lines

  1. """distutils.command.install_egg_info
  2.  
  3. Implements the Distutils 'install_egg_info' command, for installing
  4. a package's PKG-INFO metadata."""
  5.  
  6.  
  7. from distutils.cmd import Command
  8. from distutils import log, dir_util
  9. import os, sys, re
  10.  
  11. class install_egg_info(Command):
  12.     """Install an .egg-info file for the package"""
  13.  
  14.     description = "Install package's PKG-INFO metadata as an .egg-info file"
  15.     user_options = [
  16.         ('install-dir=', 'd', "directory to install to"),
  17.     ]
  18.  
  19.     def initialize_options(self):
  20.         self.install_dir = None
  21.  
  22.     def finalize_options(self):
  23.         self.set_undefined_options('install_lib',('install_dir','install_dir'))
  24.         basename = "%s-%s-py%s.egg-info" % (
  25.             to_filename(safe_name(self.distribution.get_name())),
  26.             to_filename(safe_version(self.distribution.get_version())),
  27.             sys.version[:3]
  28.         )
  29.         self.target = os.path.join(self.install_dir, basename)
  30.         self.outputs = [self.target]
  31.  
  32.     def run(self):
  33.         target = self.target
  34.         if os.path.isdir(target) and not os.path.islink(target):
  35.             dir_util.remove_tree(target, dry_run=self.dry_run)
  36.         elif os.path.exists(target):
  37.             self.execute(os.unlink,(self.target,),"Removing "+target)
  38.         elif not os.path.isdir(self.install_dir):
  39.             self.execute(os.makedirs, (self.install_dir,),
  40.                          "Creating "+self.install_dir)
  41.         log.info("Writing %s", target)
  42.         if not self.dry_run:
  43.             f = open(target, 'w')
  44.             self.distribution.metadata.write_pkg_file(f)
  45.             f.close()
  46.  
  47.     def get_outputs(self):
  48.         return self.outputs
  49.  
  50.  
  51. # The following routines are taken from setuptools' pkg_resources module and
  52. # can be replaced by importing them from pkg_resources once it is included
  53. # in the stdlib.
  54.  
  55. def safe_name(name):
  56.     """Convert an arbitrary string to a standard distribution name
  57.  
  58.     Any runs of non-alphanumeric/. characters are replaced with a single '-'.
  59.     """
  60.     return re.sub('[^A-Za-z0-9.]+', '-', name)
  61.  
  62.  
  63. def safe_version(version):
  64.     """Convert an arbitrary string to a standard version string
  65.  
  66.     Spaces become dots, and all other non-alphanumeric characters become
  67.     dashes, with runs of multiple dashes condensed to a single dash.
  68.     """
  69.     version = version.replace(' ','.')
  70.     return re.sub('[^A-Za-z0-9.]+', '-', version)
  71.  
  72.  
  73. def to_filename(name):
  74.     """Convert a project or version name to its filename-escaped form
  75.  
  76.     Any '-' characters are currently replaced with '_'.
  77.     """
  78.     return name.replace('-','_')
  79.