Update settings loader with skip argument set if not matching settings type or ignore flag is set

We have "args:no" that can be set to avoid override from arguments.
Also arguments that do not match the exepected type are not loaded
This commit is contained in:
Clemens Schwaighofer
2025-11-19 19:01:29 +09:00
parent baca79ce82
commit 1f7f4b8d53
4 changed files with 182 additions and 3 deletions

View File

@@ -93,6 +93,8 @@ class SettingsLoader:
entry_split_char: dict[str, str] = {}
# entries that should be converted
entry_convert: dict[str, str] = {}
# no args to set
args_none: list[str] = []
# all the settings for the config id given
settings: dict[str, dict[str, Any]] = {
config_id: {},
@@ -162,6 +164,8 @@ class SettingsLoader:
f"[!] In [{config_id}] the split character setup for entry failed: {check}: {e}",
'CRITICAL'
)) from e
if check == "args:no":
args_none.append(key)
if skip:
continue
settings[config_id][key] = [
@@ -185,9 +189,15 @@ class SettingsLoader:
error: bool = False
for entry, validate in config_validate.items():
# if we have command line option set, this one overrides config
if self.__get_arg(entry):
if (args_entry := self.__get_arg(entry)) is not None:
self.__print(f"[*] Command line option override for: {entry}", 'WARNING')
settings[config_id][entry] = self.args.get(entry)
if (
entry not in args_none and
(isinstance(args_entry, list) and entry_split_char.get(entry)) or
(not isinstance(args_entry, list) and not entry_split_char.get(entry))
):
# args is list, but entry has not split, do not set
settings[config_id][entry] = args_entry
# validate checks
for check in validate:
# CHECKS