AnotherLanguageApp / backend /config_manager.py
samu's picture
application version 0
6c8a2d5
import json
import os
class Config:
def __init__(self, file_path="config.json"):
self.file_path = file_path
self.data = {}
self.load()
def load(self):
"""Loads the configuration data from the JSON file."""
try:
with open(self.file_path, "r", encoding="utf-8") as f:
self.data = json.load(f)
except FileNotFoundError:
print(f"Config file not found at {self.file_path}. Creating a new one.")
self.data = {} # Start with an empty config
self.save()
except json.JSONDecodeError:
print(
f"Error: Invalid JSON format in config file at {self.file_path}. The file will be reset."
)
self.data = {}
self.save()
def save(self):
"""Saves the configuration data to the JSON file."""
with open(self.file_path, "w", encoding="utf-8") as f:
json.dump(self.data, f, indent=4, ensure_ascii=False)
def get(self, key, default=None):
"""Gets a configuration value by key.
Args:
key (str): The key to look up.
default: The default value to return if the key is not found.
Returns:
The configuration value or the default.
"""
return self.data.get(key, default)
def set(self, key, value):
"""Sets a configuration value.
Args:
key (str): The key to set.
value: The value to set.
"""
self.data[key] = value
self.save()
def update(self, new_data):
"""Updates the config data with a new dict
Args:
new_data: The data to update
"""
self.data.update(new_data)
self.save()
def delete(self, key):
"""Deletes a key from the config
Args:
key (str): the key to delete
"""
if key in self.data:
del self.data[key]
self.save()