contrib/purge/purge.py
changeset 4152 1c0488b58ece
parent 4151 337010e50dcd
child 4153 af72395580e8
equal deleted inserted replaced
4151:337010e50dcd 4152:1c0488b58ece
    20 from mercurial import hg, util
    20 from mercurial import hg, util
    21 from mercurial.i18n import _
    21 from mercurial.i18n import _
    22 import os
    22 import os
    23 
    23 
    24 class Purge(object):
    24 class Purge(object):
    25     def __init__(self, act=True, abort_on_err=False, eol='\n'):
    25     def __init__(self):
    26         self._repo = None
    26         pass
    27         self._ui = None
       
    28         self._act = act
       
    29         self._abort_on_err = abort_on_err
       
    30         self._eol = eol
       
    31 
    27 
    32     def purge(self, ui, repo, dirs=None):
    28     def purge(self, ui, repo, dirs=None, act=True, abort_on_err=False, eol='\n'):
    33         self._repo = repo
    29         def error(msg):
    34         self._ui = ui
    30             if abort_on_err:
    35 
       
    36         def error(self, msg):
       
    37             if self._abort_on_err:
       
    38                 raise util.Abort(msg)
    31                 raise util.Abort(msg)
    39             else:
    32             else:
    40                 self._ui.warn(_('warning: %s\n') % msg)
    33                 ui.warn(_('warning: %s\n') % msg)
    41 
    34 
    42         def remove(remove_func, name):
    35         def remove(remove_func, name):
    43             if self._act:
    36             if act:
    44                 try:
    37                 try:
    45                     remove_func(os.path.join(self._repo.root, name))
    38                     remove_func(os.path.join(repo.root, name))
    46                 except OSError, e:
    39                 except OSError, e:
    47                     error(_('%s cannot be removed') % name)
    40                     error(_('%s cannot be removed') % name)
    48             else:
    41             else:
    49                 self._ui.write('%s%s' % (name, self._eol))
    42                 ui.write('%s%s' % (name, eol))
    50 
    43 
    51         directories = []
    44         directories = []
    52         files = []
    45         files = []
    53         for src, f, st in repo.dirstate.statwalk(files=dirs, ignored=True,
    46         for src, f, st in repo.dirstate.statwalk(files=dirs, ignored=True,
    54                                                  directories=True):
    47                                                  directories=True):
    98     abort_on_err = bool(opts['abort_on_err'])
    91     abort_on_err = bool(opts['abort_on_err'])
    99     eol = opts['print0'] and '\0' or '\n'
    92     eol = opts['print0'] and '\0' or '\n'
   100     if eol == '\0':
    93     if eol == '\0':
   101         # --print0 implies --print
    94         # --print0 implies --print
   102         act = False
    95         act = False
   103     p = Purge(act, abort_on_err, eol)
    96     p = Purge()
   104     p.purge(ui, repo, dirs)
    97     p.purge(ui, repo, dirs, act, abort_on_err, eol)
   105 
    98 
   106 
    99 
   107 cmdtable = {
   100 cmdtable = {
   108     'purge':
   101     'purge':
   109         (purge,
   102         (purge,