Jelajahi Sumber

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 1 tahun lalu
induk
melakukan
2f8aafa3f7
1 mengubah file dengan 17 tambahan dan 7 penghapusan
  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():