Move config file modification flag handling to the Config class

Signed-off-by: Gabor Mezei <gabor.mezei@arm.com>
This commit is contained in:
Gabor Mezei 2024-08-06 17:37:55 +02:00
parent 9f2b817fa7
commit c659c1b164
No known key found for this signature in database
GPG Key ID: 6310BD29B0BFF98C

View File

@ -101,21 +101,29 @@ class Config:
If name is not known, raise KeyError. If name is not known, raise KeyError.
""" """
self.settings[name].value = value setting = self.settings[name]
if setting.configfile and setting != value:
setting.configfile.modified = True
def set(self, name, value=None): setting.value = value
def set(self, name, value=None, configfile=None):
"""Set name to the given value and make it active. """Set name to the given value and make it active.
If value is None and name is already known, don't change its value. If value is None and name is already known, don't change its value.
If value is None and name is not known, set its value to the empty If value is None and name is not known, set its value.
string.
""" """
if name in self.settings: if name in self.settings:
setting = self.settings[name]
if setting.configfile and (setting.value != value or not setting.active):
setting.configfile.modified = True
if value is not None: if value is not None:
self.settings[name].value = value setting.value = value
self.settings[name].active = True setting.active = True
else: else:
self.settings[name] = Setting(True, name, value=value) self.settings[name] = Setting(True, name, value=value, configfile=configfile)
if configfile:
self.settings[name].configfile.modified = True
def unset(self, name): def unset(self, name):
"""Make name unset (inactive). """Make name unset (inactive).
@ -589,6 +597,7 @@ class MbedTLSConfig(Config):
for (active, name, value, section) for (active, name, value, section)
in self.configfile.parse_file()}) in self.configfile.parse_file()})
#pylint: disable=arguments-differ
def set(self, name, value=None): def set(self, name, value=None):
"""Set name to the given value and make it active.""" """Set name to the given value and make it active."""
@ -626,6 +635,7 @@ class CryptoConfig(Config):
for (active, name, value, section) for (active, name, value, section)
in self.configfile.parse_file()}) in self.configfile.parse_file()})
#pylint: disable=arguments-differ
def set(self, name, value='1'): def set(self, name, value='1'):
"""Set name to the given value and make it active.""" """Set name to the given value and make it active."""
@ -684,10 +694,7 @@ class CombinedConfig(Config):
else: else:
return self.mbedtls_configfile return self.mbedtls_configfile
def __setitem__(self, name, value): #pylint: disable=arguments-differ
super().__setitem__(name, value)
self.settings[name].configfile.modified = True
def set(self, name, value=None): def set(self, name, value=None):
"""Set name to the given value and make it active.""" """Set name to the given value and make it active."""
@ -703,15 +710,10 @@ class CombinedConfig(Config):
if not value: if not value:
value = '1' value = '1'
if name in self.settings: if name not in self.settings:
setting = self.settings[name]
if not setting.active or (value is not None and setting.value != value):
configfile.modified = True
else:
configfile.templates.append((name, '', '#define ' + name + ' ')) configfile.templates.append((name, '', '#define ' + name + ' '))
configfile.modified = True
super().set(name, value) super().set(name, value, configfile)
def write(self, mbedtls_file=None, crypto_file=None): def write(self, mbedtls_file=None, crypto_file=None):
"""Write the whole configuration to the file it was read from. """Write the whole configuration to the file it was read from.