comparison mercurial/dispatch.py @ 35028:7f8f9f0369ca stable

dispatch: extract stub function to peek boolean command option We should at least stop parsing at "--". The 'name' argument is passed for future extension.
author Yuya Nishihara <yuya@tcha.org>
date Fri, 10 Nov 2017 22:22:39 +0900
parents 7384250eabd9
children e16f68c4abe3
comparison
equal deleted inserted replaced
35027:7384250eabd9 35028:7f8f9f0369ca
145 ferr = util.stderr 145 ferr = util.stderr
146 146
147 try: 147 try:
148 if not req.ui: 148 if not req.ui:
149 req.ui = uimod.ui.load() 149 req.ui = uimod.ui.load()
150 if '--traceback' in req.args: 150 if _earlyreqoptbool(req, 'traceback', ['--traceback']):
151 req.ui.setconfig('ui', 'traceback', 'on', '--traceback') 151 req.ui.setconfig('ui', 'traceback', 'on', '--traceback')
152 152
153 # set ui streams from the request 153 # set ui streams from the request
154 if req.fin: 154 if req.fin:
155 req.ui.fin = req.fin 155 req.ui.fin = req.fin
273 debugger = ui.config("ui", "debugger") 273 debugger = ui.config("ui", "debugger")
274 debugmod = pdb 274 debugmod = pdb
275 if not debugger or ui.plain(): 275 if not debugger or ui.plain():
276 # if we are in HGPLAIN mode, then disable custom debugging 276 # if we are in HGPLAIN mode, then disable custom debugging
277 debugger = 'pdb' 277 debugger = 'pdb'
278 elif '--debugger' in req.args: 278 elif _earlyreqoptbool(req, 'debugger', ['--debugger']):
279 # This import can be slow for fancy debuggers, so only 279 # This import can be slow for fancy debuggers, so only
280 # do it when absolutely necessary, i.e. when actual 280 # do it when absolutely necessary, i.e. when actual
281 # debugging has been requested 281 # debugging has been requested
282 with demandimport.deactivated(): 282 with demandimport.deactivated():
283 try: 283 try:
287 287
288 debugtrace[debugger] = debugmod.set_trace 288 debugtrace[debugger] = debugmod.set_trace
289 debugmortem[debugger] = debugmod.post_mortem 289 debugmortem[debugger] = debugmod.post_mortem
290 290
291 # enter the debugger before command execution 291 # enter the debugger before command execution
292 if '--debugger' in req.args: 292 if _earlyreqoptbool(req, 'debugger', ['--debugger']):
293 ui.warn(_("entering debugger - " 293 ui.warn(_("entering debugger - "
294 "type c to continue starting hg or h for help\n")) 294 "type c to continue starting hg or h for help\n"))
295 295
296 if (debugger != 'pdb' and 296 if (debugger != 'pdb' and
297 debugtrace[debugger] == debugtrace['pdb']): 297 debugtrace[debugger] == debugtrace['pdb']):
303 return _dispatch(req) 303 return _dispatch(req)
304 finally: 304 finally:
305 ui.flush() 305 ui.flush()
306 except: # re-raises 306 except: # re-raises
307 # enter the debugger when we hit an exception 307 # enter the debugger when we hit an exception
308 if '--debugger' in req.args: 308 if _earlyreqoptbool(req, 'debugger', ['--debugger']):
309 traceback.print_exc() 309 traceback.print_exc()
310 debugmortem[debugger](sys.exc_info()[2]) 310 debugmortem[debugger](sys.exc_info()[2])
311 raise 311 raise
312 312
313 return _callcatch(ui, _runcatchfunc) 313 return _callcatch(ui, _runcatchfunc)
696 argcount -= 1 696 argcount -= 1
697 else: 697 else:
698 pos += 1 698 pos += 1
699 return values 699 return values
700 700
701 def _earlyreqoptbool(req, name, aliases):
702 assert len(aliases) == 1
703 return aliases[0] in req.args
704
701 def runcommand(lui, repo, cmd, fullargs, ui, options, d, cmdpats, cmdoptions): 705 def runcommand(lui, repo, cmd, fullargs, ui, options, d, cmdpats, cmdoptions):
702 # run pre-hook, and abort if it fails 706 # run pre-hook, and abort if it fails
703 hook.hook(lui, repo, "pre-%s" % cmd, True, args=" ".join(fullargs), 707 hook.hook(lui, repo, "pre-%s" % cmd, True, args=" ".join(fullargs),
704 pats=cmdpats, opts=cmdoptions) 708 pats=cmdpats, opts=cmdoptions)
705 try: 709 try:
783 uis = {ui, lui} 787 uis = {ui, lui}
784 788
785 if req.repo: 789 if req.repo:
786 uis.add(req.repo.ui) 790 uis.add(req.repo.ui)
787 791
788 if '--profile' in args: 792 if _earlyreqoptbool(req, 'profile', ['--profile']):
789 for ui_ in uis: 793 for ui_ in uis:
790 ui_.setconfig('profiling', 'enabled', 'true', '--profile') 794 ui_.setconfig('profiling', 'enabled', 'true', '--profile')
791 795
792 profile = lui.configbool('profiling', 'enabled') 796 profile = lui.configbool('profiling', 'enabled')
793 with profiling.profile(lui, enabled=profile) as profiler: 797 with profiling.profile(lui, enabled=profile) as profiler: