lib: Give settigs a initialize() function

For setting a value only if it doesn't already exist

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-06-07 14:59:24 -04:00
parent 76338da8fe
commit 493c4e5c33
2 changed files with 20 additions and 5 deletions

View File

@ -34,13 +34,21 @@ def get_bool(setting, default=False):
with Prepare(setting) as (section, key):
return config.getboolean(section, key, fallback=default)
def __do_set(section, key, value):
if not config.has_section(section):
config.add_section(section)
config.set(section, key, str(value))
with data.DataFile(config_file, data.WRITE_TEXT) as f:
config.write(f.file)
def set(setting, value):
with Prepare(setting) as (section, key):
if not config.has_section(section):
config.add_section(section)
config.set(section, key, str(value))
with data.DataFile(config_file, data.WRITE_TEXT) as f:
config.write(f.file)
__do_set(section, key, value)
def initialize(setting, value):
with Prepare(setting) as (section, key):
if not config.has_option(section, key):
__do_set(section, key, value)
def load():
with data.DataFile(config_file, data.READ_TEXT) as f:

View File

@ -35,6 +35,13 @@ class TestSettings(unittest.TestCase):
settings.set("test.bool", True)
self.assertTrue(settings.get_bool("test.bool"))
def test_initialize(self):
self.assertIsNone(settings.get("test.key"))
settings.initialize("test.key", 1)
self.assertEqual(settings.get_int("test.key"), 1)
settings.initialize("test.key", 2)
self.assertEqual(settings.get_int("test.key"), 1)
def test_load(self):
settings.load()