From 274592ddf6fff2820212ab401b7422f453256a9c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20Schr=C3=B6der?=
 <fschroeder@techfak.uni-bielefeld.de>
Date: Wed, 31 Jan 2024 08:46:27 +0100
Subject: [PATCH] Add argparse for CLI in simulator script

An argparse has been added to the overcooked simulator script for better configuration of the command line interface. This allows the user to input the state file, visualization configuration and output filename when executing the script. As a result, the need to manually update these parameters in the script has been mitigated.
---
 overcooked_simulator/gui_2d_vis/drawing.py | 36 ++++++++++++++++++----
 1 file changed, 30 insertions(+), 6 deletions(-)

diff --git a/overcooked_simulator/gui_2d_vis/drawing.py b/overcooked_simulator/gui_2d_vis/drawing.py
index ec72975b..d2f44c42 100644
--- a/overcooked_simulator/gui_2d_vis/drawing.py
+++ b/overcooked_simulator/gui_2d_vis/drawing.py
@@ -1,3 +1,4 @@
+import argparse
 import colorsys
 import json
 import math
@@ -523,9 +524,32 @@ def save_screenshot(state: dict, config: dict, filename: str | Path) -> None:
 
 
 if __name__ == "__main__":
-    with open(ROOT_DIR / "gui_2d_vis" / "visualization.yaml", "r") as conf_file:
-        viz_config = yaml.safe_load(conf_file)
-    with open(ROOT_DIR / "gui_2d_vis" / "sample_state.json", "r") as jsonf:
-        sample_state = json.load(jsonf)
-    screenshot_filename = ROOT_DIR / "gui_2d_vis" / "screenshot.jpg"
-    save_screenshot(sample_state, viz_config, screenshot_filename)
+    parser = argparse.ArgumentParser(
+        prog="Overcooked Simulator Image Generation",
+        description="Generate images for a state in json.",
+        epilog="For further information, see https://scs.pages.ub.uni-bielefeld.de/cocosy/overcooked-simulator/overcooked_simulator.html",
+    )
+    parser.add_argument(
+        "-s",
+        "--state",
+        type=argparse.FileType("r", encoding="UTF-8"),
+        default=ROOT_DIR / "gui_2d_vis" / "sample_state.json",
+    )
+    parser.add_argument(
+        "-v",
+        "--visualization_config",
+        type=argparse.FileType("r", encoding="UTF-8"),
+        default=ROOT_DIR / "gui_2d_vis" / "visualization.yaml",
+    )
+    parser.add_argument(
+        "-o",
+        "--output_filename",
+        type=str,
+        default="screenshot.jpg",
+    )
+    args = parser.parse_args()
+    with open(args.visualization_config, "r") as f:
+        viz_config = yaml.safe_load(f)
+    with open(args.state, "r") as f:
+        state = json.load(f)
+    save_screenshot(state, viz_config, args.output_filename)
-- 
GitLab