mercurial/extensions.py
changeset 32724 ea1c2eb7abd3
parent 32722 de09138bf0f5
child 33014 80a5d237a4ae
equal deleted inserted replaced
32723:b6384b3d4ebe 32724:ea1c2eb7abd3
   165     return mod
   165     return mod
   166 
   166 
   167 def _runuisetup(name, ui):
   167 def _runuisetup(name, ui):
   168     uisetup = getattr(_extensions[name], 'uisetup', None)
   168     uisetup = getattr(_extensions[name], 'uisetup', None)
   169     if uisetup:
   169     if uisetup:
   170         uisetup(ui)
   170         try:
       
   171             uisetup(ui)
       
   172         except Exception as inst:
       
   173             ui.traceback()
       
   174             msg = _forbytes(inst)
       
   175             ui.warn(_("*** failed to set up extension %s: %s\n") % (name, msg))
       
   176             return False
       
   177     return True
   171 
   178 
   172 def _runextsetup(name, ui):
   179 def _runextsetup(name, ui):
   173     extsetup = getattr(_extensions[name], 'extsetup', None)
   180     extsetup = getattr(_extensions[name], 'extsetup', None)
   174     if extsetup:
   181     if extsetup:
   175         try:
   182         try:
   176             extsetup(ui)
   183             try:
   177         except TypeError:
   184                 extsetup(ui)
   178             if inspect.getargspec(extsetup).args:
   185             except TypeError:
   179                 raise
   186                 if inspect.getargspec(extsetup).args:
   180             extsetup() # old extsetup with no ui argument
   187                     raise
       
   188                 extsetup() # old extsetup with no ui argument
       
   189         except Exception as inst:
       
   190             ui.traceback()
       
   191             msg = _forbytes(inst)
       
   192             ui.warn(_("*** failed to set up extension %s: %s\n") % (name, msg))
       
   193             return False
       
   194     return True
   181 
   195 
   182 def loadall(ui, whitelist=None):
   196 def loadall(ui, whitelist=None):
   183     result = ui.configitems("extensions")
   197     result = ui.configitems("extensions")
   184     if whitelist is not None:
   198     if whitelist is not None:
   185         result = [(k, v) for (k, v) in result if k in whitelist]
   199         result = [(k, v) for (k, v) in result if k in whitelist]
   201                         % (name, msg))
   215                         % (name, msg))
   202             if isinstance(inst, error.Hint) and inst.hint:
   216             if isinstance(inst, error.Hint) and inst.hint:
   203                 ui.warn(_("*** (%s)\n") % inst.hint)
   217                 ui.warn(_("*** (%s)\n") % inst.hint)
   204             ui.traceback()
   218             ui.traceback()
   205 
   219 
       
   220     broken = set()
   206     for name in _order[newindex:]:
   221     for name in _order[newindex:]:
   207         _runuisetup(name, ui)
   222         if not _runuisetup(name, ui):
       
   223             broken.add(name)
   208 
   224 
   209     for name in _order[newindex:]:
   225     for name in _order[newindex:]:
   210         _runextsetup(name, ui)
   226         if name in broken:
       
   227             continue
       
   228         if not _runextsetup(name, ui):
       
   229             broken.add(name)
       
   230 
       
   231     for name in broken:
       
   232         _extensions[name] = None
   211 
   233 
   212     # Call aftercallbacks that were never met.
   234     # Call aftercallbacks that were never met.
   213     for shortname in _aftercallbacks:
   235     for shortname in _aftercallbacks:
   214         if shortname in _extensions:
   236         if shortname in _extensions:
   215             continue
   237             continue