Improve error handling for unselected cores

This commit is contained in:
Rilic
2023-07-17 12:52:38 +01:00
parent 0865d4e133
commit 0a2051f5c7

View File

@@ -25,6 +25,7 @@ from pathlib import Path
from time import time from time import time
from src import shared from src import shared
from src.errors.friendly_error import FriendlyError
from src.game import Game from src.game import Game
from src.importer.sources.location import Location from src.importer.sources.location import Location
from src.importer.sources.source import Source, SourceIterationResult, SourceIterator from src.importer.sources.source import Source, SourceIterationResult, SourceIterator
@@ -37,6 +38,8 @@ class RetroarchSourceIterator(SourceIterator):
# Get all playlist files, ending in .lpl # Get all playlist files, ending in .lpl
playlist_files = self.source.config_location["playlists"].glob("*.lpl") playlist_files = self.source.config_location["playlists"].glob("*.lpl")
bad_playlists = set()
for playlist_file in playlist_files: for playlist_file in playlist_files:
try: try:
with open( with open(
@@ -56,10 +59,11 @@ class RetroarchSourceIterator(SourceIterator):
item["core_path"], item["core_path"],
playlist_json["default_core_path"], playlist_json["default_core_path"],
): ):
if core_path != "DETECT": if core_path not in ("DETECT", ""):
break break
else: else:
logging.warning("Cannot find core for: %s", str(item["path"])) logging.warning("Cannot find core for: %s", str(item["path"]))
bad_playlists.add(playlist_file.stem)
continue continue
# Build game # Build game
@@ -93,6 +97,15 @@ class RetroarchSourceIterator(SourceIterator):
yield (game, additional_data) yield (game, additional_data)
if bad_playlists:
raise FriendlyError(
_("No RetroArch Core Selected"),
# The variable is a newline separated list of playlists
_("The following playlists have no default core:")
+ "\n\n{}\n\n".format("\n".join(bad_playlists))
+ _("Games with no core selected were not imported"),
)
class RetroarchSource(Source): class RetroarchSource(Source):
args = ' -L "{core_path}" "{rom_path}"' args = ' -L "{core_path}" "{rom_path}"'