cleanup PR

This commit is contained in:
LeonOstrez
2023-08-28 16:49:20 +02:00
committed by GitHub
parent 1df39a2cb5
commit f294babec3

View File

@@ -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():