config: BaseOption.set now also set parser option value

This commit is contained in:
Benjamin Renard 2021-11-23 12:31:33 +01:00
parent 8438f95e68
commit e058d315d4

View file

@ -90,22 +90,28 @@ class BaseOption:
def set(self, value):
""" Set option value to config file """
assert self.config.config_parser, "Can set option value only if configuration file is configured"
assert self.config.config_parser or (self.config.options and not self.no_arg), (
"Can't set option value: configuration file not configured, not options (or no argument)")
if value == '':
value = None
if value == self.default or value is None:
# Remove option from config
self.config.config_parser.remove_option(
self.section.name, self.name)
else:
# Store option to config
if not self.config.config_parser.has_section(self.section.name):
self.config.config_parser.add_section(self.section.name)
if self.config.config_parser:
if value == self.default or value is None:
# Remove option from config (is section exists)
if self.config.config_parser.has_section(self.section.name):
self.config.config_parser.remove_option(
self.section.name, self.name)
else:
# Store option to config
if not self.config.config_parser.has_section(self.section.name):
self.config.config_parser.add_section(self.section.name)
self.config.config_parser.set(
self.section.name, self.name, self.to_config(value)
)
self.config.config_parser.set(
self.section.name, self.name, self.to_config(value)
)
if self.config.options and not self.no_arg:
setattr(self.config.options, self.parser_dest, value)
@property
def parser_action(self):