Merge pull request #3007 from rommapp/romm-2927

[ROMM-2927] Add default folders to config manager
This commit is contained in:
Georges-Antoine Assi
2026-02-09 15:13:15 -05:00
committed by GitHub
3 changed files with 78 additions and 19 deletions

View File

@@ -28,6 +28,34 @@ from logger.logger import log
ROMM_USER_CONFIG_PATH: Final = f"{ROMM_BASE_PATH}/config"
ROMM_USER_CONFIG_FILE: Final = f"{ROMM_USER_CONFIG_PATH}/config.yml"
SQLITE_DB_BASE_PATH: Final = f"{ROMM_BASE_PATH}/database"
DEFAULT_EXCLUDED_EXTENSIONS: Final = [
"db",
"ini",
"tmp",
"bak",
"lock",
"log",
"cache",
"crdownload",
]
DEFAULT_EXCLUDED_FILES: Final = [
".DS_Store",
".localized",
".Trashes",
".stfolder",
"@SynoResource",
]
DEFAULT_EXCLUDED_DIRS: Final = [
"@eaDir",
"__MACOSX",
"$RECYCLE.BIN",
".Trash-*",
".stfolder",
".Spotlight-V100",
".fseventsd",
".DocumentRevisions-V100",
"System Volume Information",
]
class EjsControlsButton(TypedDict):
@@ -194,27 +222,39 @@ class ConfigManager:
self.config = Config(
CONFIG_FILE_MOUNTED=self._config_file_mounted,
CONFIG_FILE_WRITABLE=self._config_file_writable,
EXCLUDED_PLATFORMS=pydash.get(self._raw_config, "exclude.platforms", []),
EXCLUDED_PLATFORMS=pydash.get(
self._raw_config, "exclude.platforms", DEFAULT_EXCLUDED_DIRS
),
EXCLUDED_SINGLE_EXT=[
e.lower()
for e in pydash.get(
self._raw_config, "exclude.roms.single_file.extensions", []
self._raw_config,
"exclude.roms.single_file.extensions",
DEFAULT_EXCLUDED_EXTENSIONS,
)
],
EXCLUDED_SINGLE_FILES=pydash.get(
self._raw_config, "exclude.roms.single_file.names", []
self._raw_config,
"exclude.roms.single_file.names",
DEFAULT_EXCLUDED_FILES,
),
EXCLUDED_MULTI_FILES=pydash.get(
self._raw_config, "exclude.roms.multi_file.names", []
self._raw_config,
"exclude.roms.multi_file.names",
DEFAULT_EXCLUDED_DIRS,
),
EXCLUDED_MULTI_PARTS_EXT=[
e.lower()
for e in pydash.get(
self._raw_config, "exclude.roms.multi_file.parts.extensions", []
self._raw_config,
"exclude.roms.multi_file.parts.extensions",
DEFAULT_EXCLUDED_EXTENSIONS,
)
],
EXCLUDED_MULTI_PARTS_FILES=pydash.get(
self._raw_config, "exclude.roms.multi_file.parts.names", []
self._raw_config,
"exclude.roms.multi_file.parts.names",
DEFAULT_EXCLUDED_FILES,
),
PLATFORMS_BINDING=pydash.get(self._raw_config, "system.platforms", {}),
PLATFORMS_VERSIONS=pydash.get(self._raw_config, "system.versions", {}),

View File

@@ -1,7 +1,12 @@
import os
from pathlib import Path
from config.config_manager import ConfigManager
from config.config_manager import (
DEFAULT_EXCLUDED_DIRS,
DEFAULT_EXCLUDED_EXTENSIONS,
DEFAULT_EXCLUDED_FILES,
ConfigManager,
)
def test_config_loader():
@@ -58,12 +63,16 @@ def test_empty_config_loader():
)
)
assert loader.config.EXCLUDED_PLATFORMS == []
assert loader.config.EXCLUDED_SINGLE_EXT == []
assert loader.config.EXCLUDED_SINGLE_FILES == []
assert loader.config.EXCLUDED_MULTI_FILES == []
assert loader.config.EXCLUDED_MULTI_PARTS_EXT == []
assert loader.config.EXCLUDED_MULTI_PARTS_FILES == []
assert loader.config.EXCLUDED_PLATFORMS == DEFAULT_EXCLUDED_DIRS
assert loader.config.EXCLUDED_SINGLE_EXT == [
e.lower() for e in DEFAULT_EXCLUDED_EXTENSIONS
]
assert loader.config.EXCLUDED_SINGLE_FILES == DEFAULT_EXCLUDED_FILES
assert loader.config.EXCLUDED_MULTI_FILES == DEFAULT_EXCLUDED_DIRS
assert loader.config.EXCLUDED_MULTI_PARTS_EXT == [
e.lower() for e in DEFAULT_EXCLUDED_EXTENSIONS
]
assert loader.config.EXCLUDED_MULTI_PARTS_FILES == DEFAULT_EXCLUDED_FILES
assert loader.config.PLATFORMS_BINDING == {}
assert loader.config.PLATFORMS_VERSIONS == {}
assert loader.config.ROMS_FOLDER_NAME == "roms"

View File

@@ -3,6 +3,12 @@ from fastapi import status
from fastapi.testclient import TestClient
from main import app
from config.config_manager import (
DEFAULT_EXCLUDED_DIRS,
DEFAULT_EXCLUDED_EXTENSIONS,
DEFAULT_EXCLUDED_FILES,
)
@pytest.fixture
def client():
@@ -15,11 +21,15 @@ def test_config(client):
assert response.status_code == status.HTTP_200_OK
config = response.json()
assert config.get("EXCLUDED_PLATFORMS") == []
assert config.get("EXCLUDED_SINGLE_EXT") == []
assert config.get("EXCLUDED_SINGLE_FILES") == []
assert config.get("EXCLUDED_MULTI_FILES") == []
assert config.get("EXCLUDED_MULTI_PARTS_EXT") == []
assert config.get("EXCLUDED_MULTI_PARTS_FILES") == []
assert config.get("EXCLUDED_PLATFORMS") == DEFAULT_EXCLUDED_DIRS
assert config.get("EXCLUDED_SINGLE_EXT") == [
e.lower() for e in DEFAULT_EXCLUDED_EXTENSIONS
]
assert config.get("EXCLUDED_SINGLE_FILES") == DEFAULT_EXCLUDED_FILES
assert config.get("EXCLUDED_MULTI_FILES") == DEFAULT_EXCLUDED_DIRS
assert config.get("EXCLUDED_MULTI_PARTS_EXT") == [
e.lower() for e in DEFAULT_EXCLUDED_EXTENSIONS
]
assert config.get("EXCLUDED_MULTI_PARTS_FILES") == DEFAULT_EXCLUDED_FILES
assert config.get("PLATFORMS_BINDING") == {}
assert not config.get("SKIP_HASH_CALCULATION")