chore: restructured project, updated readme
This commit is contained in:
66
src/shared/config.py
Normal file
66
src/shared/config.py
Normal file
@@ -0,0 +1,66 @@
|
||||
"""Application configuration and settings."""
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
import yaml
|
||||
|
||||
from src.shared.logging import log
|
||||
|
||||
|
||||
@dataclass
|
||||
class Settings:
|
||||
"""Settings for the application."""
|
||||
|
||||
save_path: str
|
||||
database_name: str
|
||||
database_path: str
|
||||
bib_id: str = ""
|
||||
default_apps: bool = True
|
||||
custom_applications: list[dict[str, Any]] = field(default_factory=list)
|
||||
|
||||
def save_settings(self, config_path: str | Path = "config.yaml") -> None:
|
||||
"""Save the settings to the config file.
|
||||
|
||||
Args:
|
||||
config_path: Path to the configuration file
|
||||
"""
|
||||
try:
|
||||
with open(config_path, "w") as f:
|
||||
yaml.dump(self.__dict__, f)
|
||||
log.info(f"Settings saved to {config_path}")
|
||||
except Exception as e:
|
||||
log.error(f"Failed to save settings: {e}")
|
||||
raise
|
||||
|
||||
@classmethod
|
||||
def load_settings(cls, config_path: str | Path = "config.yaml") -> dict[str, Any]:
|
||||
"""Load the settings from the config file.
|
||||
|
||||
Args:
|
||||
config_path: Path to the configuration file
|
||||
|
||||
Returns:
|
||||
Dictionary containing the loaded settings
|
||||
"""
|
||||
try:
|
||||
with open(config_path, "r") as f:
|
||||
data = yaml.safe_load(f)
|
||||
log.info(f"Settings loaded from {config_path}")
|
||||
return data
|
||||
except Exception as e:
|
||||
log.error(f"Failed to load settings: {e}")
|
||||
raise
|
||||
|
||||
|
||||
def load_config(config_path: str | Path = "config.yaml") -> dict[str, Any]:
|
||||
"""Convenience function to load configuration.
|
||||
|
||||
Args:
|
||||
config_path: Path to the configuration file
|
||||
|
||||
Returns:
|
||||
Dictionary containing the loaded settings
|
||||
"""
|
||||
return Settings.load_settings(config_path)
|
||||
Reference in New Issue
Block a user