|
import argparse |
|
from sys import exit |
|
import subprocess |
|
from pathlib import Path |
|
from src.generic_eval import main as gmain |
|
|
|
def eval_script(path: Path): |
|
try: |
|
|
|
|
|
output = subprocess.run( |
|
["ruby", path], check=True, capture_output=True, timeout=5 |
|
) |
|
if output.returncode == 0: |
|
status = "OK" |
|
out = output.stderr |
|
error = output.stdout |
|
returncode = 0 |
|
else: |
|
raise Exception("there's an issue with check = True for Ruby, INVESTIGATE!") |
|
except subprocess.TimeoutExpired as exc: |
|
status = "Timeout" |
|
out = exc.stdout |
|
error = exc.stderr |
|
returncode = -1 |
|
except subprocess.CalledProcessError as exc: |
|
returncode = exc.returncode |
|
out = exc.stdout |
|
error = exc.stderr |
|
|
|
if len(error) < 1: |
|
status = "Exception" |
|
else: |
|
status = "SyntaxError" |
|
return { |
|
"status": status, |
|
"exit_code": returncode, |
|
"stdout": out, |
|
"stderr": error, |
|
} |
|
|
|
if __name__ == "__main__": |
|
gmain(eval_script, 'Ruby', '.rb') |
|
|