~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to clean_tree.py

  • Committer: Aaron Bentley
  • Date: 2006-06-18 01:24:25 UTC
  • mfrom: (0.3.3 shelf-dev)
  • Revision ID: aaron.bentley@utoronto.ca-20060618012425-61c3d9d62a2cc971
Merged the latest Shelf changes, patches.py no longer needed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
import sys
20
20
 
21
21
from bzrlib.osutils import has_symlinks, isdir
 
22
from bzrlib.trace import note
22
23
from bzrlib.workingtree import WorkingTree
23
24
 
24
25
 
28
29
        subp.endswith('.OTHER') or subp.endswith('~') or subp.endswith('.tmp')
29
30
 
30
31
 
31
 
def iter_deletables(tree, unknown=False, ignored=False, detritus=False):
 
32
def iter_deletables(tree, unknown=True, ignored=False, detritus=False):
32
33
    """Iterate through files that may be deleted"""
33
34
    for subp in tree.extras():
34
35
        if detritus and is_detritus(subp):
42
43
                yield tree.abspath(subp), subp
43
44
 
44
45
 
45
 
def clean_tree(directory, out=sys.stdout, unknown=False, ignored=False,
46
 
               detritus=False, dry_run=False):
 
46
def clean_tree(directory, ignored=False, detritus=False, dry_run=False):
47
47
    """Remove files in the specified classes from the tree"""
48
48
    tree = WorkingTree.open_containing(directory)[0]
49
 
    tree.lock_read()
50
 
    try:
51
 
        deletables = iter_deletables(tree, unknown=unknown, ignored=ignored,
52
 
                                     detritus=detritus)
53
 
        delete_items(deletables, dry_run=dry_run)
54
 
    finally:
55
 
        tree.unlock()
56
 
 
57
 
 
58
 
def delete_items(deletables, out=sys.stdout, dry_run=False):
 
49
    deletables = iter_deletables(tree, ignored=ignored, detritus=detritus)
 
50
    delete_items(deletables, dry_run=dry_run)
 
51
 
 
52
 
 
53
def delete_items(deletables, dry_run=False):
59
54
    """Delete files in the deletables iterable"""
60
55
    has_deleted = False
61
56
    for path, subp in deletables:
62
57
        if not has_deleted:
63
 
            print >>out, "deleting paths:"
 
58
            note("deleting paths:")
64
59
            has_deleted = True
65
 
        print >>out, '  ' + subp
 
60
        note('  ' + subp)
66
61
        if not dry_run:
67
62
            if isdir(path):
68
63
                shutil.rmtree(path)
69
64
            else:
70
65
                os.unlink(path)
71
66
    if not has_deleted:
72
 
        print >>out, "No files deleted."
 
67
        note("No files deleted.")