From 9f762bb7504ca67a154d3822bbc4ce5ac9f2eb4d Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Fri, 11 Sep 2026 14:10:55 +0000 Subject: [PATCH] =?UTF-8?q?cfg:=20support=20option=20setting=20via=20?= =?UTF-8?q?=E2=80=98overrides=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mmgen/cfg.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mmgen/cfg.py b/mmgen/cfg.py index c0459cc7..b4d9b12b 100755 --- a/mmgen/cfg.py +++ b/mmgen/cfg.py @@ -593,7 +593,9 @@ class Config(Lockable): # Step 8: process opts_data['sets'] and opts_data['requires']: if opts_data: if 'sets' in opts_data: - self._set_opts_data_sets_opts(opts_data) + self._set_opts_data_sets_opts(opts_data, 'sets') + if 'overrides' in opts_data: + self._set_opts_data_sets_opts(opts_data, 'overrides', overrides=True) if 'requires' in opts_data: # for required value of None, use False instead if not {'help', 'longhelp', 'usage'}.intersection(self._uopts): self._check_opts_data_requires_opts(opts_data) @@ -792,11 +794,11 @@ class Config(Lockable): elif key in cfgfile_auto_typeset_opts: do_set(key, cfgfile_auto_typeset_opts[key], ref_type) - def _set_opts_data_sets_opts(self, opts_data): - for a_opt, a_val, b_opt, b_val in opts_data['sets']: + def _set_opts_data_sets_opts(self, opts_data, op, *, overrides=False): + for a_opt, a_val, b_opt, b_val in opts_data[op]: if (usr_a_val := getattr(self, a_opt, None)) not in (None, False): if a_val == bool or usr_a_val == a_val: - if ((usr_b_val := getattr(self, b_opt, None)) in (None, False)) or usr_b_val == b_val: + if overrides or ((usr_b_val := getattr(self, b_opt, None)) in (None, False)) or usr_b_val == b_val: setattr(self, b_opt, b_val) else: die('UserOptError', 'Option {} conflicts with option {}\n'.format(