~ubuntu-branches/ubuntu/maverick/python3.1/maverick

« back to all changes in this revision

Viewing changes to Lib/distutils/command/clean.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-03-23 00:01:27 UTC
  • Revision ID: james.westby@ubuntu.com-20090323000127-5fstfxju4ufrhthq
Tags: upstream-3.1~a1+20090322
ImportĀ upstreamĀ versionĀ 3.1~a1+20090322

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
__revision__ = "$Id: clean.py 57699 2007-08-30 03:52:21Z collin.winter $"
 
8
 
 
9
import os
 
10
from distutils.core import Command
 
11
from distutils.dir_util import remove_tree
 
12
from distutils import log
 
13
 
 
14
class clean(Command):
 
15
 
 
16
    description = "clean up temporary files from 'build' command"
 
17
    user_options = [
 
18
        ('build-base=', 'b',
 
19
         "base build directory (default: 'build.build-base')"),
 
20
        ('build-lib=', None,
 
21
         "build directory for all modules (default: 'build.build-lib')"),
 
22
        ('build-temp=', 't',
 
23
         "temporary build directory (default: 'build.build-temp')"),
 
24
        ('build-scripts=', None,
 
25
         "build directory for scripts (default: 'build.build-scripts')"),
 
26
        ('bdist-base=', None,
 
27
         "temporary directory for built distributions"),
 
28
        ('all', 'a',
 
29
         "remove all build output, not just temporary by-products")
 
30
    ]
 
31
 
 
32
    boolean_options = ['all']
 
33
 
 
34
    def initialize_options(self):
 
35
        self.build_base = None
 
36
        self.build_lib = None
 
37
        self.build_temp = None
 
38
        self.build_scripts = None
 
39
        self.bdist_base = None
 
40
        self.all = None
 
41
 
 
42
    def finalize_options(self):
 
43
        self.set_undefined_options('build',
 
44
                                   ('build_base', 'build_base'),
 
45
                                   ('build_lib', 'build_lib'),
 
46
                                   ('build_scripts', 'build_scripts'),
 
47
                                   ('build_temp', 'build_temp'))
 
48
        self.set_undefined_options('bdist',
 
49
                                   ('bdist_base', 'bdist_base'))
 
50
 
 
51
    def run(self):
 
52
        # remove the build/temp.<plat> directory (unless it's already
 
53
        # gone)
 
54
        if os.path.exists(self.build_temp):
 
55
            remove_tree(self.build_temp, dry_run=self.dry_run)
 
56
        else:
 
57
            log.debug("'%s' does not exist -- can't clean it",
 
58
                      self.build_temp)
 
59
 
 
60
        if self.all:
 
61
            # remove build directories
 
62
            for directory in (self.build_lib,
 
63
                              self.bdist_base,
 
64
                              self.build_scripts):
 
65
                if os.path.exists(directory):
 
66
                    remove_tree(directory, dry_run=self.dry_run)
 
67
                else:
 
68
                    log.warn("'%s' does not exist -- can't clean it",
 
69
                             directory)
 
70
 
 
71
        # just for the heck of it, try to remove the base build directory:
 
72
        # we might have emptied it right now, but if not we don't care
 
73
        if not self.dry_run:
 
74
            try:
 
75
                os.rmdir(self.build_base)
 
76
                log.info("removing '%s'", self.build_base)
 
77
            except OSError:
 
78
                pass