diff --git a/src/leek/mod.py b/src/leek/mod.py index aca1726..8d57465 100644 --- a/src/leek/mod.py +++ b/src/leek/mod.py @@ -1,17 +1,18 @@ import tomlkit +from pathlib import Path from tomlkit import TOMLDocument class Mod: __config: TOMLDocument - __path: str + __path: Path __name: str __description: str __author: str __enabled: bool @property - def path(self) -> str: + def path(self) -> Path: return self.__path # Mod metadata @@ -44,15 +45,17 @@ class Mod: # Nothing to do return - with open(self.__path + "config.toml", "w") as config_file: + config_toml = Path(self.__path, "config.toml") + with config_toml.open("w") as config_file: self.__config["enabled"] = value tomlkit.dump(self.__config, config_file) - def __init__(self, path: str) -> None: + def __init__(self, path: Path) -> None: self.__path = path try: - with open(path + "config.toml") as config_file: + config_toml = Path(self.__path, "config.toml") + with config_toml.open() as config_file: self.__config = tomlkit.load(config_file) if "enabled" not in self.__config: diff --git a/src/leek/mod_list.py b/src/leek/mod_list.py index 8e5c6b6..f8696a5 100644 --- a/src/leek/mod_list.py +++ b/src/leek/mod_list.py @@ -1,13 +1,14 @@ from PySide6.QtQml import QmlElement from PySide6.QtCore import QAbstractListModel, QModelIndex from leek.mod import Mod, InvalidModError -import os +from pathlib import Path QML_IMPORT_NAME = "Leek" QML_IMPORT_MAJOR_VERSION = 1 # TODO: Don't harcode the mods path -GAME_PATH = "/home/toast/.local/share/Steam/steamapps/common/Hatsune Miku Project DIVA Mega Mix Plus/" +GAME_PATH = Path("/home/toast/.local/share/Steam/steamapps/common/Hatsune Miku Project DIVA Mega Mix Plus/") +MOD_PATH = Path(GAME_PATH, "mods") # Qt follows C++ naming conventions # ruff: noqa: N802 @@ -17,14 +18,13 @@ class QModListModel(QAbstractListModel): super().__init__(parent=parent) mods: list[Mod] = [] - with os.scandir(GAME_PATH + "mods/") as dirs: - for dir in dirs: - try: - new_mod: Mod = Mod(dir.path + "/" ) - mods.append(new_mod) - except InvalidModError as e: - print(f"Found invalid mod at {dir.path}: {e.message}") - continue + for dir in MOD_PATH.iterdir(): + try: + new_mod: Mod = Mod(dir) + mods.append(new_mod) + except InvalidModError as e: + print(f"Found invalid mod at {dir}: {e.message}") + continue self.mods = mods