comparison contrib/purge/purge.py @ 4150:cf26f4564000

Merge _remove_file() and _remove_dir() in a single function
author Emanuele Aina <faina.mail@tiscali.it>
date Tue, 06 Mar 2007 17:45:44 -0300
parents e59286f15189
children 337010e50dcd
comparison
equal deleted inserted replaced
4149:e59286f15189 4150:cf26f4564000
43 files.append(f) 43 files.append(f)
44 44
45 directories.sort() 45 directories.sort()
46 46
47 for f in files: 47 for f in files:
48 self._remove_file(f) 48 if f not in self._repo.dirstate:
49 self._ui.note(_('Removing file %s\n') % f)
50 self._remove(os.remove, f)
49 51
50 for f in directories[::-1]: 52 for f in directories[::-1]:
51 if not os.listdir(repo.wjoin(f)): 53 if not os.listdir(repo.wjoin(f)):
52 self._remove_dir(f) 54 self._ui.note(_('Removing directory %s\n') % f)
55 self._remove(os.rmdir, f)
53 56
54 self._repo = None 57 self._repo = None
55 self._ui = None 58 self._ui = None
56 59
57 def _error(self, msg): 60 def _error(self, msg):
58 if self._abort_on_err: 61 if self._abort_on_err:
59 raise util.Abort(msg) 62 raise util.Abort(msg)
60 else: 63 else:
61 self._ui.warn(_('warning: %s\n') % msg) 64 self._ui.warn(_('warning: %s\n') % msg)
62 65
63 def _remove_file(self, name): 66 def _remove(self, remove_func, name):
64 if name in self._repo.dirstate:
65 return
66 self._ui.note(_('Removing file %s\n') % name)
67 if self._act: 67 if self._act:
68 try: 68 try:
69 os.remove(self._repo.wjoin(name)) 69 remove_func(self._repo.wjoin(name))
70 except OSError, e:
71 self._error(_('%s cannot be removed') % name)
72 else:
73 self._ui.write('%s%s' % (name, self._eol))
74
75 def _remove_dir(self, name):
76 self._ui.note(_('Removing directory %s\n') % name)
77 if self._act:
78 try:
79 os.rmdir(self._repo.wjoin(name))
80 except OSError, e: 70 except OSError, e:
81 self._error(_('%s cannot be removed') % name) 71 self._error(_('%s cannot be removed') % name)
82 else: 72 else:
83 self._ui.write('%s%s' % (name, self._eol)) 73 self._ui.write('%s%s' % (name, self._eol))
84 74