diff --git a/joj3_config_generator/matlab_defs.py b/joj3_config_generator/matlab_defs.py deleted file mode 100644 index 04f0db4..0000000 --- a/joj3_config_generator/matlab_defs.py +++ /dev/null @@ -1,142 +0,0 @@ -import json -from typing import Any - -import yaml - - -def matlab_json_init() -> dict[str, Any]: - output_json: dict[str, Any] = { - "sandboxExecServer": "172.17.0.1:5051", - "outputPath": "/tmp/joj3_result.json", # nosec - "stages": [], - } - healthcheck_json = { - "name": "healthcheck", - "executor": { - "name": "sandbox", - "with": { - "default": { - "args": [ - "./healthcheck", - "-root=.", - "-meta=readme", - "-whitelist=stderr", - "-whitelist=stdout", - "-whitelist=.*\\.toml", - "-whitelist=.*\\.md", - "-whitelist=healthcheck", - "-whitelist=.*\\.json", - "-whitelist=.git.*", - ], - "env": ["PATH=/usr/bin:/bin"], - "cpuLimit": 10000000000, - "memoryLimit": 104857600, - "procLimit": 50, - "copyInDir": ".", - "copyIn": { - "healthcheck": { - "src": "./../../../../../../build/healthcheck", - "copyOut": ["stdout", "stderr"], - } - }, - "stdin": {"content": ""}, - "stdout": {"name": "stdout", "max": 4096}, - "stderr": {"name": "stderr", "max": 4096}, - } - }, - }, - "parser": { - "name": "healthcheck", - "with": {"score": 10, "comment": " + comment from json conf"}, - }, - } - run_json = { - "name": "run", - "executor": { - "name": "sandbox", - "with": { - "default": { - "args": [""], - "env": ["PATH=/usr/bin:/bin"], - "cpuLimit": 20000000000, - "memoryLimit": 104857600, - "clockLimit": 40000000000, - "procLimit": 50, - "copyOut": ["stdout", "stderr"], - "stdout": {"name": "stdout", "max": 4096}, - "stderr": {"name": "stderr", "max": 4096}, - # matlab don't need this - # "copyInCached": { - # "a": "a" - # } - }, - "cases": [], - }, - }, - "parser": {"name": "diff", "with": {"cases": []}}, - } - output_json["stages"].append(healthcheck_json) - output_json["stages"].append(run_json) - return output_json - - -def get_cases(output_json: dict[str, Any], yaml_data: dict[str, Any]) -> dict[str, Any]: - for case in yaml_data["cases"]: - print(yaml_data["cases"]) - input_entry = {"stdin": {"src": case["input"]}} - output_entry = { - "outputs": { - "score": 100, - "fileName": "stdout", - "answerPath": case["output"], - } - } - output_json["stages"][1]["executor"]["with"]["cases"].append(input_entry) - output_json["stages"][1]["parser"]["with"]["cases"].append(output_entry) - return output_json - - -# Function to merge YAML content into the JSON structure -def yaml_to_custom_json(yaml_file: str, json_file: str) -> None: - # Load YAML data from the input file - with open(yaml_file) as f: - yaml_data = yaml.safe_load(f) - - # Define the base JSON structure as per your example - output_json = matlab_json_init() - - # memory limit migration - memory_str = yaml_data["default"]["memory"] - memory_limit = int(memory_str[:-1]) * 1024 * 1024 - output_json["stages"][0]["executor"]["with"]["default"][ - "memoryLimit" - ] = memory_limit - - # time limit migration - time_str = yaml_data["default"]["time"] - cpu_limit = int(time_str[:-1]) * 1000000000 - clock_limit = 2 * cpu_limit - output_json["stages"][1]["executor"]["with"]["default"]["cpuLimit"] = cpu_limit - output_json["stages"][1]["executor"]["with"]["default"]["clockLimit"] = clock_limit - - # test cases migration - # testcases input migration - # # testcases output migration - output_json = get_cases(output_json, yaml_data) - - # execution args migration - args = "octave " + assignment_name + ".m" - output_json["stages"][1]["executor"]["with"]["default"]["args"] = args.split() - - # Write the output JSON to the specified file - with open(json_file, "w") as f: - json.dump(output_json, f, indent=2) - - -# i/p of files -yaml_file = "./ex4/config.yaml" -json_file = "./output.json" -assignment_name = "ex4" -yaml_to_custom_json(yaml_file, json_file) - -print(f"YAML content has been successfully converted to JSON and saved to {json_file}")