mirror of
https://github.com/OMGeeky/gpt-pilot.git
synced 2025-12-30 08:03:32 +01:00
cleanup PR
This commit is contained in:
@@ -5,7 +5,7 @@ import threading
|
||||
import queue
|
||||
import time
|
||||
import uuid
|
||||
import platform # Import the platform module
|
||||
import platform
|
||||
|
||||
from termcolor import colored
|
||||
from database.database import get_command_run_from_hash_id, save_command_run
|
||||
@@ -25,40 +25,25 @@ def enqueue_output(out, q):
|
||||
|
||||
def run_command(command, root_path, q_stdout, q_stderr, pid_container):
|
||||
if platform.system() == 'Windows': # Check the operating system
|
||||
return run_command_windows(command, root_path, q_stdout, q_stderr, pid_container)
|
||||
process = subprocess.Popen(
|
||||
command,
|
||||
shell=True,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
text=True,
|
||||
cwd=root_path
|
||||
)
|
||||
else:
|
||||
return run_command_unix(command, root_path, q_stdout, q_stderr, pid_container)
|
||||
process = subprocess.Popen(
|
||||
command,
|
||||
shell=True,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
text=True,
|
||||
preexec_fn=os.setsid, # Use os.setsid only for Unix-like systems
|
||||
cwd=root_path
|
||||
)
|
||||
|
||||
def run_command_windows(command, root_path, q_stdout, q_stderr, pid_container):
|
||||
# Windows-specific implementation using subprocess
|
||||
process = subprocess.Popen(
|
||||
command,
|
||||
shell=True,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
text=True,
|
||||
cwd=root_path
|
||||
)
|
||||
pid_container[0] = process.pid
|
||||
t_stdout = threading.Thread(target=enqueue_output, args=(process.stdout, q_stdout))
|
||||
t_stderr = threading.Thread(target=enqueue_output, args=(process.stderr, q_stderr))
|
||||
t_stdout.daemon = True
|
||||
t_stderr.daemon = True
|
||||
t_stdout.start()
|
||||
t_stderr.start()
|
||||
return process
|
||||
|
||||
def run_command_unix(command, root_path, q_stdout, q_stderr, pid_container):
|
||||
# Unix-like systems implementation using os.setsid
|
||||
process = subprocess.Popen(
|
||||
command,
|
||||
shell=True,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
text=True,
|
||||
preexec_fn=os.setsid, # Use os.setsid only for Unix-like systems
|
||||
cwd=root_path
|
||||
)
|
||||
pid_container[0] = process.pid
|
||||
t_stdout = threading.Thread(target=enqueue_output, args=(process.stdout, q_stdout))
|
||||
t_stderr = threading.Thread(target=enqueue_output, args=(process.stderr, q_stderr))
|
||||
@@ -77,7 +62,7 @@ def terminate_process(pid):
|
||||
pass
|
||||
else: # Unix-like systems
|
||||
try:
|
||||
os.killpg(pid, signal.SIGTERM)
|
||||
os.killpg(pid, signal.SIGKILL)
|
||||
except OSError:
|
||||
# Handle any potential errors here
|
||||
pass
|
||||
@@ -164,11 +149,7 @@ def execute_command(project, command, timeout=None, force=False):
|
||||
else:
|
||||
print("\nTimeout detected. Stopping command execution...")
|
||||
|
||||
if platform.system() == 'Windows':
|
||||
pid = pid_container[0] # Replace with the actual PID
|
||||
terminate_process(pid)
|
||||
else:
|
||||
os.killpg(pid_container[0], signal.SIGKILL)
|
||||
terminate_process(pid_container[0])
|
||||
|
||||
# stderr_output = ''
|
||||
# while not q_stderr.empty():
|
||||
|
||||
Reference in New Issue
Block a user