mirror of
https://github.com/Snigdha-OS/snigdhaos-blackbox.git
synced 2025-09-21 12:05:02 +02:00
⏳ @eshanized updated the repository!!!
This commit is contained in:
132
usr/share/blackbox/Settings.py
Normal file
132
usr/share/blackbox/Settings.py
Normal file
@@ -0,0 +1,132 @@
|
||||
# This class is used to process configuration data for the app
|
||||
|
||||
import os
|
||||
import Functions as fn
|
||||
from string import Template
|
||||
|
||||
base_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
# a default configuration file if one doesn't exist is copied over from /usr/share/sofirem/defaults to $HOME/.config
|
||||
default_file = "%s/defaults/sofirem.yaml" % base_dir
|
||||
|
||||
|
||||
class Settings(object):
|
||||
def __init__(self, display_versions, display_package_progress):
|
||||
self.display_versions = display_versions
|
||||
self.display_package_progress = display_package_progress
|
||||
|
||||
def write_config_file(self):
|
||||
try:
|
||||
content = []
|
||||
with open(fn.config_file, "r", encoding="UTF-8") as f:
|
||||
contents = f.readlines()
|
||||
|
||||
if len(contents) > 0:
|
||||
self.read(contents)
|
||||
|
||||
conf_settings = {}
|
||||
|
||||
conf_settings["Display Package Versions"] = self.display_versions
|
||||
|
||||
conf_settings[
|
||||
"Display Package Progress"
|
||||
] = self.display_package_progress
|
||||
|
||||
index = 0
|
||||
for line in contents:
|
||||
if line.startswith("- name:"):
|
||||
if (
|
||||
line.strip("- name: ")
|
||||
.strip()
|
||||
.strip('"')
|
||||
.strip("\n")
|
||||
.strip()
|
||||
== "Display Package Versions"
|
||||
):
|
||||
index = contents.index(line)
|
||||
|
||||
index += 2
|
||||
|
||||
if contents[index].startswith(" enabled: "):
|
||||
del contents[index]
|
||||
contents.insert(
|
||||
index,
|
||||
" enabled: %s\n"
|
||||
% conf_settings["Display Package Versions"],
|
||||
)
|
||||
|
||||
if (
|
||||
line.strip("- name: ")
|
||||
.strip()
|
||||
.strip('"')
|
||||
.strip("\n")
|
||||
.strip()
|
||||
== "Display Package Progress"
|
||||
):
|
||||
index += 4
|
||||
if contents[index].startswith(" enabled: "):
|
||||
del contents[index]
|
||||
contents.insert(
|
||||
index,
|
||||
" enabled: %s\n"
|
||||
% conf_settings["Display Package Progress"],
|
||||
)
|
||||
|
||||
if len(contents) > 0:
|
||||
with open(fn.config_file, "w", encoding="UTF-8") as f:
|
||||
f.writelines(contents)
|
||||
|
||||
fn.permissions(fn.config_dir)
|
||||
|
||||
except Exception as e:
|
||||
fn.logger.error("Exception in write_config_file(): %s" % e)
|
||||
|
||||
def read_config_file(self):
|
||||
try:
|
||||
if os.path.exists(fn.config_file):
|
||||
contents = []
|
||||
with open(fn.config_file, "r", encoding="UTF-8") as f:
|
||||
contents = f.readlines()
|
||||
|
||||
# file is empty, string replace template file
|
||||
if len(contents) == 0:
|
||||
fn.shutil.copy(default_file, fn.config_file)
|
||||
fn.permissions(fn.config_dir)
|
||||
else:
|
||||
return self.read(contents)
|
||||
|
||||
else:
|
||||
# config file doesn't exist, string replace template file
|
||||
fn.shutil.copy(default_file, fn.config_file)
|
||||
fn.permissions(fn.config_dir)
|
||||
|
||||
with open(fn.config_file, "r", encoding="UTF-8") as f:
|
||||
contents = f.readlines()
|
||||
|
||||
return self.read(contents)
|
||||
|
||||
except Exception as e:
|
||||
print("Exception in read_config_file(): %s" % e)
|
||||
|
||||
def read(self, contents):
|
||||
setting_name = None
|
||||
setting_value_enabled = None
|
||||
conf_settings = {}
|
||||
for line in contents:
|
||||
if line.startswith("- name:"):
|
||||
setting_name = (
|
||||
line.strip("- name: ").strip().strip('"').strip("\n").strip()
|
||||
)
|
||||
elif line.startswith(" enabled: "):
|
||||
setting_value_enabled = (
|
||||
line.strip(" enabled: ").strip().strip('"').strip("\n").strip()
|
||||
)
|
||||
|
||||
if setting_value_enabled == "False":
|
||||
conf_settings[setting_name] = False
|
||||
else:
|
||||
conf_settings[setting_name] = True
|
||||
|
||||
if len(conf_settings) > 0:
|
||||
return conf_settings
|
||||
else:
|
||||
print("[ERROR] Failed to read settings into memory")
|
Reference in New Issue
Block a user