--- a/mercurial/debugcommands.py Tue Jan 10 11:40:19 2023 +0100
+++ b/mercurial/debugcommands.py Thu Jan 19 11:12:20 2023 -0500
@@ -3786,8 +3786,21 @@
ui.writenoi18n(b' revision %s\n' % v[1])
-@command(b'debugshell', optionalrepo=True)
-def debugshell(ui, repo):
+@command(
+ b'debugshell',
+ [
+ (
+ b'c',
+ b'command',
+ b'',
+ _(b'program passed in as a string'),
+ _(b'COMMAND'),
+ )
+ ],
+ _(b'[-c COMMAND]'),
+ optionalrepo=True,
+)
+def debugshell(ui, repo, **opts):
"""run an interactive Python interpreter
The local namespace is provided with a reference to the ui and
@@ -3815,6 +3828,12 @@
except ImportError:
site = None # Keep PyCharm happy
+ command = opts.get('command')
+ if command:
+ compiled = code.compile_command(encoding.strfromlocal(command))
+ code.InteractiveInterpreter(locals=imported_objects).runcode(compiled)
+ return
+
code.interact(local=imported_objects)