Browse Source

Move config parsing to validate logic

nosoop 10 months ago
parent
commit
2d341c83cc
2 changed files with 14 additions and 18 deletions
  1. 3 18
      src/smgdc/app.py
  2. 11 0
      src/smgdc/validate.py

+ 3 - 18
src/smgdc/app.py

@@ -3,20 +3,9 @@
 import argparse
 import configparser
 import pathlib
-import struct
 
-import msgspec
-
-from .validate import (
-    ByteSignature,
-    Code,
-    GameConfDict,
-    IntLiteral,
-    LinuxBinary,
-    PlatformBinary,
-    WindowsBinary,
-    convert_types,
-)
+from . import validate
+from .validate import LinuxBinary, PlatformBinary, WindowsBinary
 
 
 def main() -> None:
@@ -29,11 +18,7 @@ def main() -> None:
     config = configparser.ConfigParser()
     config.read(args.validation_file)
 
-    entries = msgspec.convert(
-        {s: config[s] for s in config.sections()},
-        type=GameConfDict,
-        dec_hook=convert_types(ByteSignature, Code, IntLiteral, struct.Struct, pathlib.Path),
-    )
+    entries = validate.read_config(config)
 
     linux_target = LinuxBinary(pathlib.Path("server_srv.so"))
     windows_target = WindowsBinary(pathlib.Path("server.dll"))

+ 11 - 0
src/smgdc/validate.py

@@ -1,5 +1,6 @@
 #!/usr/bin/python3
 
+import configparser
 import contextlib
 import enum
 import functools
@@ -276,4 +277,14 @@ class ValueReadEntry(LocationEntry, tag="value", kw_only=True):
 
 
 ConfigEntry = typing.Union[VirtualFunctionEntry, ByteSigEntry, ValueReadEntry]
+
+
 GameConfDict = dict[str, ConfigEntry]
+
+
+def read_config(config: configparser.ConfigParser) -> GameConfDict:
+    return msgspec.convert(
+        {s: config[s] for s in config.sections()},
+        type=GameConfDict,
+        dec_hook=convert_types(ByteSignature, Code, IntLiteral, struct.Struct, pathlib.Path),
+    )