Browse Source

engine_path now pathlib.Path; DYLD_LIBRARY_PATH & DYLD_FRAMEWORK_PATH relative to engine path; drop TOONTOWN_LIBRARY_PATH

Fabian Peter Hammerle 4 years ago
parent
commit
cfc9fbf76f
3 changed files with 21 additions and 14 deletions
  1. 6 0
      CHANGELOG.md
  2. 12 12
      tooncher/__init__.py
  3. 3 2
      tooncher/_cli.py

+ 6 - 0
CHANGELOG.md

@@ -12,13 +12,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
   - `tooncher.LoginDelayed`
   - `tooncher.LoginSuccessful`
   - `tooncher.api_request`
+- `start_engine` & `launch`: expected `isinstance(engine_path, pathlib.Path)`
+  (instead of `str`)
 
 ### Removed
 - `argcomplete`
 - `tooncher.INVASIONS_API_URL`
 - `tooncher.InvasionProgress`
+- `tooncher.TOONTOWN_LIBRARY_PATH`
 - `tooncher.request_active_invasions`
 
+### Fixed
+- mac: set DYLD_LIBRARY_PATH & DYLD_FRAMEWORK_PATH relatively to engine path
+
 ## [0.4.1] - 2019-12-22
 ### Fixed
 - `YAMLLoadWarning: […] the default Loader is unsafe. […]`

+ 12 - 12
tooncher/__init__.py

@@ -1,6 +1,7 @@
 import datetime
 import json
 import os
+import pathlib
 import ssl
 import subprocess
 import sys
@@ -15,29 +16,28 @@ import urllib.request
 _LOGIN_API_URL = "https://www.toontownrewritten.com/api/login?format=json"
 
 if sys.platform == "darwin":
-    TOONTOWN_LIBRARY_PATH = os.path.join(
-        os.path.expanduser("~"), "Library", "Application Support", "Toontown Rewritten",
-    )
     TOONTOWN_ENGINE_DEFAULT_PATH = os.path.join(
-        TOONTOWN_LIBRARY_PATH, "Toontown Rewritten",
+        os.path.expanduser("~"),
+        "Library",
+        "Application Support",
+        "Toontown Rewritten",
+        "Toontown Rewritten",
     )
 else:
-    TOONTOWN_LIBRARY_PATH = None
     TOONTOWN_ENGINE_DEFAULT_PATH = None
 
 
 def start_engine(
-    engine_path: str, gameserver: str, playcookie: str, **popen_kwargs
+    engine_path: pathlib.Path, gameserver: str, playcookie: str, **popen_kwargs
 ) -> subprocess.Popen:
     env = {
         "TTR_GAMESERVER": gameserver,
         "TTR_PLAYCOOKIE": playcookie,
     }
+    engine_path = engine_path.resolve()
     if sys.platform == "darwin":
-        env["DYLD_LIBRARY_PATH"] = os.path.join(
-            TOONTOWN_LIBRARY_PATH, "Libraries.bundle",
-        )
-        env["DYLD_FRAMEWORK_PATH"] = os.path.join(TOONTOWN_LIBRARY_PATH, "Frameworks",)
+        env["DYLD_LIBRARY_PATH"] = engine_path.parent.joinpath("Libraries.bundle")
+        env["DYLD_FRAMEWORK_PATH"] = engine_path.parent.joinpath("Frameworks")
     elif sys.platform == "linux" and "XAUTHORITY" in os.environ:
         # Fix for TTREngine reporting:
         # > :display:x11display(error): Could not open display ":0.0".
@@ -50,7 +50,7 @@ def start_engine(
         # > Exception: Could not open window.
         env["XAUTHORITY"] = os.environ["XAUTHORITY"]
     return subprocess.Popen(
-        args=[engine_path], cwd=os.path.dirname(engine_path), env=env, **popen_kwargs,
+        args=[str(engine_path)], cwd=engine_path.parent(), env=env, **popen_kwargs,
     )
 
 
@@ -107,7 +107,7 @@ def login(
 
 
 def launch(
-    engine_path: str,
+    engine_path: pathlib.Path,
     username: str,
     password: str,
     validate_ssl_certs: bool = True,

+ 3 - 2
tooncher/_cli.py

@@ -1,6 +1,7 @@
+import argparse
 import os
+import pathlib
 
-import argparse
 import yaml
 
 import tooncher
@@ -27,7 +28,7 @@ def run(
     for account in accounts:
         if account["username"] == username:
             tooncher.launch(
-                engine_path=engine_path,
+                engine_path=pathlib.Path(engine_path),
                 username=account["username"],
                 password=account["password"],
                 validate_ssl_certs=validate_ssl_certs,