mirror of
https://github.com/Omni-guides/Jackify.git
synced 2026-08-14 02:23:45 +02:00
Release v0.7 - Tools Hub, Engine Choice, NXM Link Handling, Native Component Install, NSF/CSF Support
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
"""Service for running verify_install.py from Jackify workflows."""
|
||||
|
||||
import importlib.util
|
||||
import logging
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
_BUNDLED_PATH = Path(__file__).parent.parent.parent / "tools" / "verify_install.py"
|
||||
|
||||
|
||||
def _load_verifier():
|
||||
spec = importlib.util.spec_from_file_location("_verify_install_bundled", _BUNDLED_PATH)
|
||||
if spec is None or spec.loader is None:
|
||||
raise ImportError(f"Cannot locate bundled verify_install.py at {_BUNDLED_PATH}")
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
sys.modules.setdefault("_verify_install_bundled", module)
|
||||
spec.loader.exec_module(module)
|
||||
return module
|
||||
|
||||
|
||||
def resolve_pfx_for_appid(appid: str) -> Optional[Path]:
|
||||
"""Resolve the Proton prefix path for a Steam AppID."""
|
||||
if not appid:
|
||||
return None
|
||||
steam_roots = [
|
||||
Path.home() / ".steam" / "steam",
|
||||
Path.home() / ".local" / "share" / "Steam",
|
||||
Path.home() / ".steam" / "root",
|
||||
Path.home() / ".var" / "app" / "com.valvesoftware.Steam" / "data" / "Steam",
|
||||
]
|
||||
for root in steam_roots:
|
||||
pfx = root / "steamapps" / "compatdata" / str(appid) / "pfx"
|
||||
if pfx.is_dir():
|
||||
return pfx
|
||||
return None
|
||||
|
||||
|
||||
def run_install_verification(pfx: Path, modlist_dir: Path, game_type: str, appid: str = "", modlist_name: str = ""):
|
||||
"""Run the install verifier and return a Results object, or None on failure."""
|
||||
try:
|
||||
verifier = _load_verifier()
|
||||
return verifier.run_verification(pfx, modlist_dir, game_type, appid, modlist_name)
|
||||
except Exception as e:
|
||||
logger.warning("Install verifier failed: %s", e, exc_info=True)
|
||||
raise
|
||||
Reference in New Issue
Block a user