fix: handle zero-length shortcuts file

This commit is contained in:
aclist 2026-07-11 18:10:30 +09:00
parent fc1311579c
commit 6fdf5547dc

View File

@ -27,10 +27,8 @@ class ShortcutMetadata:
class Shortcuts: class Shortcuts:
def __init__(self, steam_path: Path) -> None: def __init__(self, steam_path: Path) -> None:
uid = find_user_id_32(steam_path) self.user_config_path: Path
self.uid = uid self.shortcuts_path = self.find_shortcuts_path(steam_path)
self.user_config_path = steam_path.joinpath(f"userdata/{uid}/config")
self.shortcuts_path = self.user_config_path.joinpath("shortcuts.vdf")
self._load_shortcuts(self.shortcuts_path) self._load_shortcuts(self.shortcuts_path)
@classmethod @classmethod
@ -56,10 +54,16 @@ class Shortcuts:
with open(path, "rb") as f: with open(path, "rb") as f:
shortcuts = vdf.binary_load(f) shortcuts = vdf.binary_load(f)
self.shortcuts = shortcuts self.shortcuts = shortcuts
logger.debug("Loaded shortcuts file")
except Exception as e: except Exception as e:
logger.critical(e) logger.critical(e)
raise e raise e
def find_shortcuts_path(self, steam_path: Path) -> None:
uid = find_user_id_32(steam_path)
self.user_config_path = steam_path.joinpath(f"userdata/{uid}/config")
return self.user_config_path.joinpath("shortcuts.vdf")
def add_shortcut( def add_shortcut(
self, appname: str, start_dir: Path, exe_path: Path, icon: Path self, appname: str, start_dir: Path, exe_path: Path, icon: Path
) -> None: ) -> None:
@ -94,8 +98,11 @@ class Shortcuts:
dest.write_bytes(b) dest.write_bytes(b)
def _insert_at_last_index(self, entry: dict[str, Any]) -> None: def _insert_at_last_index(self, entry: dict[str, Any]) -> None:
last = list(self.shortcuts["shortcuts"].keys())[-1] try:
n = int(last) + 1 last = list(self.shortcuts["shortcuts"].keys())[-1]
n = int(last) + 1
except Exception:
n = 0
self.shortcuts["shortcuts"][str(n)] = entry self.shortcuts["shortcuts"][str(n)] = entry
@classmethod @classmethod
@ -162,5 +169,6 @@ def add_steam_shortcut(steam_path: Path, exe_path: Path) -> None:
shortcuts.add_grid_images(images) shortcuts.add_grid_images(images)
copy_dzgui_to_xdg_data(exe_path) copy_dzgui_to_xdg_data(exe_path)
logger.debug("Finished creating Steam shortcut")
except Exception as e: except Exception as e:
logger.critical(e) logger.critical(e)