Bläddra i källkod

Start implementing dynamic path mounts

Binaries may not have the path that the configuration files expect
them to, so we need to make validation select binaries on custom
paths.
nosoop 10 månader sedan
förälder
incheckning
2f8aafa3f7
1 ändrade filer med 17 tillägg och 7 borttagningar
  1. 17 7
      src/smgdc/app.py

+ 17 - 7
src/smgdc/app.py

@@ -21,14 +21,24 @@ def main() -> None:
     else:
         validation_files.add(args.validation_path)
 
+    bin_mounts = {
+        "232250/tf/bin/server.dll": "server.dll",
+        "232250/tf/bin/server_srv.so": "server_srv.so",
+    }
+
+    candidate_targets: list[PlatformBinary] = []
+    for mount, bin in bin_mounts.items():
+        bin_path = pathlib.Path(bin)
+        loaded_bin: PlatformBinary
+        if bin_path.suffix == ".so":
+            loaded_bin = LinuxBinary(bin_path)
+        elif bin_path.suffix == ".dll":
+            loaded_bin = WindowsBinary(bin_path)
+        else:
+            raise ValueError(f"Unknown bin suffix {bin_path.suffix}")
+        loaded_bin.path = pathlib.Path(mount)
+        candidate_targets.append(loaded_bin)
 
-    linux_target = LinuxBinary(pathlib.Path("server_srv.so"))
-    windows_target = WindowsBinary(pathlib.Path("server.dll"))
-
-    linux_target.path = pathlib.Path("232250/tf/bin/server_srv.so")
-    windows_target.path = pathlib.Path("232250/tf/bin/server.dll")
-
-    candidate_targets: list[PlatformBinary] = [linux_target, windows_target]
     for validation_file in sorted(validation_files):
         header = validation_file.stem
         if args.validation_path.is_dir():