| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- """distutils.command.clean
- Implements the Distutils 'clean' command."""
- # contributed by Bastian Kleineidam <calvin@cs.uni-sb.de>, added 2000-03-18
- import os
- from distutils._log import log
- from typing import ClassVar
- from ..core import Command
- from ..dir_util import remove_tree
- class clean(Command):
- description = "clean up temporary files from 'build' command"
- user_options = [
- ('build-base=', 'b', "base build directory [default: 'build.build-base']"),
- (
- 'build-lib=',
- None,
- "build directory for all modules [default: 'build.build-lib']",
- ),
- ('build-temp=', 't', "temporary build directory [default: 'build.build-temp']"),
- (
- 'build-scripts=',
- None,
- "build directory for scripts [default: 'build.build-scripts']",
- ),
- ('bdist-base=', None, "temporary directory for built distributions"),
- ('all', 'a', "remove all build output, not just temporary by-products"),
- ]
- boolean_options: ClassVar[list[str]] = ['all']
- def initialize_options(self):
- self.build_base = None
- self.build_lib = None
- self.build_temp = None
- self.build_scripts = None
- self.bdist_base = None
- self.all = None
- def finalize_options(self):
- self.set_undefined_options(
- 'build',
- ('build_base', 'build_base'),
- ('build_lib', 'build_lib'),
- ('build_scripts', 'build_scripts'),
- ('build_temp', 'build_temp'),
- )
- self.set_undefined_options('bdist', ('bdist_base', 'bdist_base'))
- def run(self):
- # remove the build/temp.<plat> directory (unless it's already
- # gone)
- if os.path.exists(self.build_temp):
- remove_tree(self.build_temp)
- else:
- log.debug("'%s' does not exist -- can't clean it", self.build_temp)
- if self.all:
- # remove build directories
- for directory in (self.build_lib, self.bdist_base, self.build_scripts):
- if os.path.exists(directory):
- remove_tree(directory)
- else:
- log.warning("'%s' does not exist -- can't clean it", directory)
- # just for the heck of it, try to remove the base build directory:
- # we might have emptied it right now, but if not we don't care
- try:
- os.rmdir(self.build_base)
- log.info("removing '%s'", self.build_base)
- except OSError:
- pass
|