~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/add.py

  • Committer: Martin Pool
  • Date: 2005-09-01 06:33:48 UTC
  • Revision ID: mbp@sourcefrog.net-20050901063348-e71d651642ab18ba
- clean up parameters to smart_add and smart_add_branch

- the two add callbacks aren't private to the module, so shouldn't
  have underscore-prefixed names.  call them 'add reporters' as a 
  less generic name aren't private to the module, so shouldn't
  have underscore-prefixed names.  call them 'add reporters' as a 
  less generic name

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
    return expanded_file_list
36
36
 
37
37
 
38
 
def _NullAddCallback(path, kind, entry):
 
38
def add_reporter_null(path, kind, entry):
 
39
    """Absorb add reports and do nothing."""
39
40
    pass
40
41
 
41
 
def _PrintAddCallback(path, kind, entry):
 
42
def add_reporter_print(path, kind, entry):
 
43
    """Print a line to stdout for each file that's added."""
42
44
    print "added", quotefn(path)
43
45
    
44
46
def _prepare_file_list(file_list):
52
54
    assert not isinstance(file_list, basestring)
53
55
    return file_list
54
56
 
55
 
def smart_add(file_list, verbose=True, recurse=True, callback=_NullAddCallback):
 
57
 
 
58
def smart_add(file_list, recurse=True, reporter=add_reporter_null):
56
59
    """Add files to version, optionally recursing into directories.
57
60
 
58
61
    This is designed more towards DWIM for humans than API simplicity.
59
62
    For the specific behaviour see the help for cmd_add().
 
63
 
 
64
    Returns the number of files added.
60
65
    """
61
66
    file_list = _prepare_file_list(file_list)
62
67
    b = Branch(file_list[0], find_root=True)
63
 
    return smart_add_branch(b, file_list, verbose, recurse)
 
68
    return smart_add_branch(b, file_list, recurse, reporter)
 
69
 
64
70
        
65
 
def smart_add_branch(branch, file_list, verbose=True, recurse=True,
66
 
                     callback=_NullAddCallback):
 
71
def smart_add_branch(branch, file_list, recurse=True, reporter=add_reporter_null):
67
72
    """Add files to version, optionally recursing into directories.
68
73
 
69
74
    This is designed more towards DWIM for humans than API simplicity.
70
75
    For the specific behaviour see the help for cmd_add().
71
76
 
72
77
    This yields a sequence of (path, kind, file_id) for added files.
 
78
 
 
79
    Returns the number of files added.
73
80
    """
74
81
    import os
75
82
    import sys
78
85
    import bzrlib.branch
79
86
    import bzrlib.osutils
80
87
 
 
88
    assert isinstance(recurse, bool)
 
89
 
81
90
    file_list = _prepare_file_list(file_list)
82
91
    user_list = file_list[:]
83
92
    inv = branch.read_working_inventory()
124
133
            entry = inv.add_path(rf, kind=kind)
125
134
            mutter("added %r kind %r file_id={%s}" % (rf, kind, entry.file_id))
126
135
            count += 1 
127
 
            callback(rf, kind, entry)
 
136
            reporter(rf, kind, entry)
128
137
 
129
138
        if kind == 'directory' and recurse and not sub_tree:
130
139
            for subf in os.listdir(af):
138
147
                    file_list.append(branch.abspath(subp))
139
148
 
140
149
 
 
150
    mutter('added %d entries', count)
 
151
    
141
152
    if count > 0:
142
 
        if verbose:
143
 
            note('added %d' % count)
144
153
        branch._write_inventory(inv)
145
 
    else:
146
 
        note("nothing new to add")
147
 
        # should this return 1 to the shell?
 
154
 
 
155
    return count