Config.parse_arguments_options(): add hardcoded_options argument
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
Benjamin Renard 2023-01-10 10:51:48 +01:00
parent 56162452ac
commit 3a43b8d07d

View file

@ -847,7 +847,8 @@ class Config: # pylint: disable=too-many-instance-attributes
return self.options_parser return self.options_parser
def parse_arguments_options(self, argv=None, parser=None, create=True, ask_values=True, def parse_arguments_options(self, argv=None, parser=None, create=True, ask_values=True,
exit_after_created=True, execute_callback=True): exit_after_created=True, execute_callback=True,
hardcoded_options=None):
""" """
Parse arguments options Parse arguments options
@ -862,6 +863,11 @@ class Config: # pylint: disable=too-many-instance-attributes
creation (default: True) creation (default: True)
:param execute_callback: Sections's loaded callbacks will be executed only if True :param execute_callback: Sections's loaded callbacks will be executed only if True
(default: True) (default: True)
:param hardcoded_options: Optional hard-coded options to set after loading arguments
and configuration file. These options are passed using an
list of tuple of 3 elements: the section and the option
names and the value.
[('section1', 'option1', value), ...]
""" """
parser = parser if parser else self.get_arguments_parser() parser = parser if parser else self.get_arguments_parser()
argcomplete.autocomplete(parser) argcomplete.autocomplete(parser)
@ -899,6 +905,17 @@ class Config: # pylint: disable=too-many-instance-attributes
elif options.verbose: elif options.verbose:
logging.getLogger().setLevel(logging.INFO) logging.getLogger().setLevel(logging.INFO)
if hardcoded_options:
assert isinstance(hardcoded_options, list), (
'hardcoded_options must be a list of tuple of 3 elements: '
'the section and the option names and the value.')
for opt_info in hardcoded_options:
assert isinstance(opt_info, tuple) and len(opt_info) == 3, (
'Invalid hard-coded option value: it must be a tuple of 3 '
'elements: the section and the option names and the value.'
)
self.set(*opt_info)
if self.get('console', 'enabled'): if self.get('console', 'enabled'):
stdout_console_handler = logging.StreamHandler( stdout_console_handler = logging.StreamHandler(
sys.stderr if self.get('console', 'force_stderr') sys.stderr if self.get('console', 'force_stderr')