1
0
Fork 0
mirror of synced 2024-06-17 10:04:43 +12:00
Rare/rare/utils/config_helper.py
loathingKernel f6a372cc1f ConfigHelper: Add wine related functions
`get_wine_prefixes`: Returns all prefixes defined in legendary's configuration
`get_wine_prefix`: Returns wine prefix associated with a game
2023-12-24 21:08:26 +02:00

71 lines
2 KiB
Python

import os
from typing import Callable, Optional, List, Set
from legendary.core import LegendaryCore
from legendary.models.config import LGDConf
_config: Optional[LGDConf] = None
_save_config: Optional[Callable[[], None]] = None
def init_config_handler(core: LegendaryCore):
global _config, _save_config
_config = core.lgd.config
_save_config = core.lgd.save_config
def save_config():
if _save_config is None:
raise RuntimeError("Uninitialized use of config_helper")
_save_config()
def add_option(app_name: str, option: str, value: str):
value = value.replace("%%", "%").replace("%", "%%")
if not _config.has_section(app_name):
_config[app_name] = {}
_config.set(app_name, option, value)
save_config()
def remove_option(app_name, option):
if _config.has_option(app_name, option):
_config.remove_option(app_name, option)
# if _config.has_section(app_name) and not _config[app_name]:
# _config.remove_section(app_name)
save_config()
def remove_section(app_name):
return
# Disabled due to env variables implementation
if _config.has_section(app_name):
_config.remove_section(app_name)
save_config()
def get_wine_prefixes() -> Set[str]:
prefixes = ["~/.wine"]
for name, section in _config.items():
pfx = section.get("WINEPREFIX") or section.get("wine_prefix")
if pfx:
prefixes.append(pfx)
return {prefix for prefix in prefixes if os.path.isdir(os.path.expanduser(prefix))}
def get_wine_prefix(app_name: Optional[str] = None) -> str:
if app_name is None:
prefix = "~/.wine"
prefix = _config.get("default.env", "WINEPREFIX", fallback=prefix)
prefix = _config.get("default", "wine_prefix", fallback=prefix)
else:
prefix = get_wine_prefix()
prefix = _config.get(f'{app_name}.env', 'WINEPREFIX', fallback=prefix)
prefix = _config.get(app_name, 'wine_prefix', fallback=prefix)
return os.path.abspath(os.path.expanduser(prefix))