[PATCH 4 of 4] debugshell: check ui.debugger for which debugger to use
Sean Farley
sean.michael.farley at gmail.com
Fri Sep 20 15:28:33 CDT 2013
# HG changeset patch
# User Sean Farley <sean.michael.farley at gmail.com>
# Date 1373822200 18000
# Sun Jul 14 12:16:40 2013 -0500
# Node ID d50dff88d0e8477896f49eec885c379ed16f90d4
# Parent 4c1a591f6674905b8b2ecd09ae2a85de0ba7e84c
debugshell: check ui.debugger for which debugger to use
diff --git a/contrib/debugshell.py b/contrib/debugshell.py
--- a/contrib/debugshell.py
+++ b/contrib/debugshell.py
@@ -1,8 +1,9 @@
# debugshell extension
"""a python shell with repo, changelog & manifest objects"""
+import sys
import mercurial
import code
def pdb(ui, repo, msg, **opts):
objects = {
@@ -25,10 +26,27 @@
def debugshell(ui, repo, **opts):
bannermsg = "loaded repo : %s\n" \
"using source: %s" % (repo.root,
mercurial.__path__[0])
- pdb(ui, repo, bannermsg, **opts)
+ pdbmap = {
+ 'pdb' : 'code',
+ 'ipdb' : 'IPython'
+ }
+
+ debugger = ui.config("ui", "debugger")
+ if not debugger:
+ debugger = 'pdb'
+
+ # if IPython doesn't exist, fallback to code.interact
+ try:
+ __import__(pdbmap[debugger])
+ except ImportError:
+ ui.warn("%s debugger specified but %s module was not found\n"
+ % (debugger, pdbmap[debugger]))
+ debugger = 'pdb'
+
+ getattr(sys.modules[__name__], debugger)(ui, repo, bannermsg, **opts)
cmdtable = {
"debugshell|dbsh|db": (debugshell, [])
}
More information about the Mercurial-devel
mailing list