diff --git a/lib/settings.py b/lib/settings.py index f217336..cf2fc46 100644 --- a/lib/settings.py +++ b/lib/settings.py @@ -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: diff --git a/lib/test_settings.py b/lib/test_settings.py index a49c9c2..0f41675 100644 --- a/lib/test_settings.py +++ b/lib/test_settings.py @@ -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()