home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / Texte / scribus / scribus-1.3.3.9-win32-install.exe / lib / distutils / command / clean.py < prev    next >
Text File  |  2004-11-18  |  3KB  |  83 lines

  1. """distutils.command.clean
  2.  
  3. Implements the Distutils 'clean' command."""
  4.  
  5. # contributed by Bastian Kleineidam <calvin@cs.uni-sb.de>, added 2000-03-18
  6.  
  7. # This module should be kept compatible with Python 2.1.
  8.  
  9. __revision__ = "$Id: clean.py,v 1.16 2004/11/10 22:23:15 loewis Exp $"
  10.  
  11. import os
  12. from distutils.core import Command
  13. from distutils.dir_util import remove_tree
  14. from distutils import log
  15.  
  16. class clean (Command):
  17.  
  18.     description = "clean up output of 'build' command"
  19.     user_options = [
  20.         ('build-base=', 'b',
  21.          "base build directory (default: 'build.build-base')"),
  22.         ('build-lib=', None,
  23.          "build directory for all modules (default: 'build.build-lib')"),
  24.         ('build-temp=', 't',
  25.          "temporary build directory (default: 'build.build-temp')"),
  26.         ('build-scripts=', None,
  27.          "build directory for scripts (default: 'build.build-scripts')"),
  28.         ('bdist-base=', None,
  29.          "temporary directory for built distributions"),
  30.         ('all', 'a',
  31.          "remove all build output, not just temporary by-products")
  32.     ]
  33.  
  34.     boolean_options = ['all']
  35.  
  36.     def initialize_options(self):
  37.         self.build_base = None
  38.         self.build_lib = None
  39.         self.build_temp = None
  40.         self.build_scripts = None
  41.         self.bdist_base = None
  42.         self.all = None
  43.  
  44.     def finalize_options(self):
  45.         self.set_undefined_options('build',
  46.                                    ('build_base', 'build_base'),
  47.                                    ('build_lib', 'build_lib'),
  48.                                    ('build_scripts', 'build_scripts'),
  49.                                    ('build_temp', 'build_temp'))
  50.         self.set_undefined_options('bdist',
  51.                                    ('bdist_base', 'bdist_base'))
  52.  
  53.     def run(self):
  54.         # remove the build/temp.<plat> directory (unless it's already
  55.         # gone)
  56.         if os.path.exists(self.build_temp):
  57.             remove_tree(self.build_temp, dry_run=self.dry_run)
  58.         else:
  59.             log.debug("'%s' does not exist -- can't clean it",
  60.                       self.build_temp)
  61.  
  62.         if self.all:
  63.             # remove build directories
  64.             for directory in (self.build_lib,
  65.                               self.bdist_base,
  66.                               self.build_scripts):
  67.                 if os.path.exists(directory):
  68.                     remove_tree(directory, dry_run=self.dry_run)
  69.                 else:
  70.                     log.warn("'%s' does not exist -- can't clean it",
  71.                              directory)
  72.  
  73.         # just for the heck of it, try to remove the base build directory:
  74.         # we might have emptied it right now, but if not we don't care
  75.         if not self.dry_run:
  76.             try:
  77.                 os.rmdir(self.build_base)
  78.                 log.info("removing '%s'", self.build_base)
  79.             except OSError:
  80.                 pass
  81.  
  82. # class clean
  83.