mercurial/debugcommands.py
changeset 49944 8f76a41ee465
parent 49896 88b81dc2d82b
child 49999 637d46c5b1fa
--- 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)