comparison contrib/purge/purge.py @ 4151:337010e50dcd

Use nested functions instead of object methods
author Emanuele Aina <faina.mail@tiscali.it>
date Tue, 06 Mar 2007 17:45:45 -0300
parents cf26f4564000
children 1c0488b58ece
comparison
equal deleted inserted replaced
4150:cf26f4564000 4151:337010e50dcd
30 self._eol = eol 30 self._eol = eol
31 31
32 def purge(self, ui, repo, dirs=None): 32 def purge(self, ui, repo, dirs=None):
33 self._repo = repo 33 self._repo = repo
34 self._ui = ui 34 self._ui = ui
35 35
36 def error(self, msg):
37 if self._abort_on_err:
38 raise util.Abort(msg)
39 else:
40 self._ui.warn(_('warning: %s\n') % msg)
41
42 def remove(remove_func, name):
43 if self._act:
44 try:
45 remove_func(os.path.join(self._repo.root, name))
46 except OSError, e:
47 error(_('%s cannot be removed') % name)
48 else:
49 self._ui.write('%s%s' % (name, self._eol))
50
36 directories = [] 51 directories = []
37 files = [] 52 files = []
38 for src, f, st in repo.dirstate.statwalk(files=dirs, ignored=True, 53 for src, f, st in repo.dirstate.statwalk(files=dirs, ignored=True,
39 directories=True): 54 directories=True):
40 if src == 'd': 55 if src == 'd':
43 files.append(f) 58 files.append(f)
44 59
45 directories.sort() 60 directories.sort()
46 61
47 for f in files: 62 for f in files:
48 if f not in self._repo.dirstate: 63 if f not in repo.dirstate:
49 self._ui.note(_('Removing file %s\n') % f) 64 ui.note(_('Removing file %s\n') % f)
50 self._remove(os.remove, f) 65 remove(os.remove, f)
51 66
52 for f in directories[::-1]: 67 for f in directories[::-1]:
53 if not os.listdir(repo.wjoin(f)): 68 if not os.listdir(repo.wjoin(f)):
54 self._ui.note(_('Removing directory %s\n') % f) 69 ui.note(_('Removing directory %s\n') % f)
55 self._remove(os.rmdir, f) 70 remove(os.rmdir, f)
56
57 self._repo = None
58 self._ui = None
59
60 def _error(self, msg):
61 if self._abort_on_err:
62 raise util.Abort(msg)
63 else:
64 self._ui.warn(_('warning: %s\n') % msg)
65
66 def _remove(self, remove_func, name):
67 if self._act:
68 try:
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 71
75 72
76 def purge(ui, repo, *dirs, **opts): 73 def purge(ui, repo, *dirs, **opts):
77 '''removes files not tracked by mercurial 74 '''removes files not tracked by mercurial
78 75