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,12 +90,15 @@ class BaseOption:
def set(self, value): def set(self, value):
""" Set option value to config file """ """ 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 == '': if value == '':
value = None value = None
if self.config.config_parser:
if value == self.default or value is None: if value == self.default or value is None:
# Remove option from config # Remove option from config (is section exists)
if self.config.config_parser.has_section(self.section.name):
self.config.config_parser.remove_option( self.config.config_parser.remove_option(
self.section.name, self.name) self.section.name, self.name)
else: else:
@ -107,6 +110,9 @@ class BaseOption:
self.section.name, self.name, self.to_config(value) 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 @property
def parser_action(self): def parser_action(self):
""" Get action as accept by argparse.ArgumentParser """ """ Get action as accept by argparse.ArgumentParser """