Refactoring and error checks

This commit is contained in:
Rilic
2023-07-23 17:21:24 +01:00
parent 8eca19d9a1
commit 311ed3b09c

View File

@@ -28,7 +28,7 @@ from time import time
from src import shared
from src.errors.friendly_error import FriendlyError
from src.game import Game
from src.importer.sources.location import Location
from src.importer.sources.location import Location, UnresolvableLocationError
from src.importer.sources.source import Source, SourceIterationResult, SourceIterator
from src.importer.sources.steam_source import SteamSource
@@ -128,26 +128,6 @@ class RetroarchSourceIterator(SourceIterator):
class RetroarchSource(Source):
def __init__(self) -> None:
super().__init__()
# Find steam location
libraryfolders = SteamSource().data_location["libraryfolders.vdf"]
library_path = ""
with open(libraryfolders, "r", encoding="utf-8") as open_file:
for line in open_file:
if '"path"' in line:
library_path = re.findall(
'"path"\\s+"(.*)"\n', line, re.IGNORECASE
)[0]
elif "1118310" in line:
break
if library_path:
self.config_location.candidates.append(
Path(f"{library_path}/steamapps/common/RetroArch")
)
name = _("RetroArch")
available_on = {"linux", "windows"}
iterator_class = RetroarchSourceIterator
@@ -177,3 +157,30 @@ class RetroarchSource(Source):
base = "flatpak run org.libretro.RetroArch" if is_flatpak else "retroarch"
args = '-L "{core_path}" "{rom_path}"'
return f"{base} {args}"
def __init__(self) -> None:
super().__init__()
try:
self.config_location.candidates.append(self.get_steam_location())
except (OSError, KeyError, UnresolvableLocationError):
pass
def get_steam_location(self) -> str:
# Find steam location
libraryfolders = SteamSource().data_location["libraryfolders.vdf"]
library_path = ""
with open(libraryfolders, "r", encoding="utf-8") as open_file:
for line in open_file:
if '"path"' in line:
library_path = re.findall(
'"path"\\s+"(.*)"\n', line, re.IGNORECASE
)[0]
elif "1118310" in line:
break
if library_path:
return Path(f"{library_path}/steamapps/common/RetroArch")
raise ValueError("No Steam RetroArch installed.")