From ec6a18ee8ee45ab3480999badb3a3a9fd0f1902b Mon Sep 17 00:00:00 2001
From: Mr Finchum <mr.finchum@pm.me>
Date: Wed, 9 Apr 2025 23:32:20 +0200
Subject: [PATCH] Added Settings handler

---
 src/settings/__init__.py |  3 ++
 src/settings/main.py     | 60 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+)
 create mode 100644 src/settings/__init__.py
 create mode 100644 src/settings/main.py

diff --git a/src/settings/__init__.py b/src/settings/__init__.py
new file mode 100644
index 0000000..a84263a
--- /dev/null
+++ b/src/settings/__init__.py
@@ -0,0 +1,3 @@
+from .main import HandleSettings
+
+__version__ = "0.0.1"
diff --git a/src/settings/main.py b/src/settings/main.py
new file mode 100644
index 0000000..031ba89
--- /dev/null
+++ b/src/settings/main.py
@@ -0,0 +1,60 @@
+import yaml
+
+class HandleSettings:
+    def __init__(self, path):
+        self.file = path
+
+    def read_settings(self, entry_name):
+        """Read a specific entry from the settings file."""
+        data = self._read_file()
+        if data != None and entry_name in data:
+            return data[entry_name]
+        else:
+            return None
+
+    def _read_file(self):
+        """Read from the yaml file."""
+        try:
+            with open(self.file, "r") as file:
+                data = yaml.safe_load(file)
+                return data
+        except (FileNotFoundError, PermissionError) as e:
+            print(f"Error loading settings file: {e}")
+            return None
+
+    def save_settings(self, entry_name, datadict):
+        """Save the settings file, update a desired section."""
+        data = self._read_file()
+        if data != None:
+            data[entry_name] = datadict
+        else:
+            data = dict()
+            data[entry_name] = datadict
+        task = self._write_file(data)
+        return task
+
+    def _write_file(self, data):
+        """Write dict to yaml file."""
+        try:
+            with open(self.file, "w") as file:
+                yaml.dump(data, file)
+            return True
+        except PermissionError as e:
+            print(f"Error saving setings: {e}")
+            return False
+
+    def delete_entry(self, entry_name):
+        """Deletes and specific entry from the entire settings file/dict."""
+        data = self._read_file()
+
+        if data != None and entry_name in data:
+            del data[entry_name]
+            self._write_file(data)
+            return True
+        else:
+            return False
+
+    def purge_settings(self):
+        """Inserts an empty dict."""
+        task = self._write_file(dict())
+        return task