Replace string paths with pathlib's path #11

Merged
Toast merged 2 commits from pathlib into main 2025-05-25 14:34:03 +02:00
2 changed files with 18 additions and 15 deletions

View file

@ -1,17 +1,18 @@
import tomlkit import tomlkit
from pathlib import Path
from tomlkit import TOMLDocument from tomlkit import TOMLDocument
class Mod: class Mod:
__config: TOMLDocument __config: TOMLDocument
__path: str __path: Path
__name: str __name: str
__description: str __description: str
__author: str __author: str
__enabled: bool __enabled: bool
@property @property
def path(self) -> str: def path(self) -> Path:
return self.__path return self.__path
# Mod metadata # Mod metadata
@ -44,15 +45,17 @@ class Mod:
# Nothing to do # Nothing to do
return 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 self.__config["enabled"] = value
tomlkit.dump(self.__config, config_file) tomlkit.dump(self.__config, config_file)
def __init__(self, path: str) -> None: def __init__(self, path: Path) -> None:
self.__path = path self.__path = path
try: 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) self.__config = tomlkit.load(config_file)
if "enabled" not in self.__config: if "enabled" not in self.__config:

View file

@ -1,13 +1,14 @@
from PySide6.QtQml import QmlElement from PySide6.QtQml import QmlElement
from PySide6.QtCore import QAbstractListModel, QModelIndex from PySide6.QtCore import QAbstractListModel, QModelIndex
from leek.mod import Mod, InvalidModError from leek.mod import Mod, InvalidModError
import os from pathlib import Path
QML_IMPORT_NAME = "Leek" QML_IMPORT_NAME = "Leek"
QML_IMPORT_MAJOR_VERSION = 1 QML_IMPORT_MAJOR_VERSION = 1
# TODO: Don't harcode the mods path # 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 # Qt follows C++ naming conventions
# ruff: noqa: N802 # ruff: noqa: N802
@ -17,13 +18,12 @@ class QModListModel(QAbstractListModel):
super().__init__(parent=parent) super().__init__(parent=parent)
mods: list[Mod] = [] mods: list[Mod] = []
with os.scandir(GAME_PATH + "mods/") as dirs: for dir in MOD_PATH.iterdir():
for dir in dirs:
try: try:
new_mod: Mod = Mod(dir.path + "/" ) new_mod: Mod = Mod(dir)
mods.append(new_mod) mods.append(new_mod)
except InvalidModError as e: except InvalidModError as e:
print(f"Found invalid mod at {dir.path}: {e.message}") print(f"Found invalid mod at {dir}: {e.message}")
continue continue
self.mods = mods self.mods = mods