mirror of
https://github.com/Aider-AI/aider.git
synced 2025-06-01 18:25:00 +00:00
feat: add run_interactive_command function
This commit is contained in:
parent
0197853c39
commit
90d3b8fab6
1 changed files with 30 additions and 0 deletions
|
@ -15,6 +15,36 @@ from aider.dump import dump # noqa: F401
|
||||||
IMAGE_EXTENSIONS = {".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".webp"}
|
IMAGE_EXTENSIONS = {".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".webp"}
|
||||||
|
|
||||||
|
|
||||||
|
def run_interactive_command(command):
|
||||||
|
"""
|
||||||
|
Run a shell command interactively using pexpect, capturing all output.
|
||||||
|
|
||||||
|
:param command: The command to run as a string.
|
||||||
|
:return: A tuple containing (exit_status, output)
|
||||||
|
"""
|
||||||
|
output = BytesIO()
|
||||||
|
|
||||||
|
def output_callback(b):
|
||||||
|
output.write(b)
|
||||||
|
return b
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Spawn the command
|
||||||
|
child = pexpect.spawn(command, encoding=None)
|
||||||
|
|
||||||
|
# Transfer control to the user, capturing output
|
||||||
|
child.interact(output_filter=output_callback)
|
||||||
|
|
||||||
|
# Wait for the command to finish and get the exit status
|
||||||
|
child.close()
|
||||||
|
return child.exitstatus, output.getvalue().decode("utf-8", errors="replace")
|
||||||
|
|
||||||
|
except pexpect.ExceptionPexpect as e:
|
||||||
|
error_msg = f"Error running command: {e}"
|
||||||
|
print(error_msg, file=sys.stderr)
|
||||||
|
return 1, error_msg
|
||||||
|
|
||||||
|
|
||||||
def run_interactive_command(command):
|
def run_interactive_command(command):
|
||||||
"""
|
"""
|
||||||
Run a shell command interactively using pexpect, capturing all output.
|
Run a shell command interactively using pexpect, capturing all output.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue