mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-31 09:44:59 +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"}
|
||||
|
||||
|
||||
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):
|
||||
"""
|
||||
Run a shell command interactively using pexpect, capturing all output.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue