From: Georges Discry Date: Fri, 15 Sep 2023 19:18:51 +0000 (+0200) Subject: Precompute long options X-Git-Tag: v17~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=978a40428983906a874da24daef9ce2b0228f9a9;p=thirdparty%2Fmkosi.git Precompute long options Like the `name` attribute used for the INI files, precompute the `long` attribute used by argparse when it is derived from a setting's `dest`. --- diff --git a/mkosi/config.py b/mkosi/config.py index 1da591e02..f5c61e08b 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -504,7 +504,7 @@ class MkosiConfigSetting: # settings for argparse short: Optional[str] = None - long: Optional[str] = None + long: str = "" choices: Optional[Any] = None metavar: Optional[str] = None nargs: Optional[str] = None @@ -514,6 +514,8 @@ class MkosiConfigSetting: def __post_init__(self) -> None: if not self.name: object.__setattr__(self, 'name', ''.join(x.capitalize() for x in self.dest.split('_') if x)) + if not self.long: + object.__setattr__(self, "long", f"--{self.dest.replace('_', '-')}") @dataclasses.dataclass(frozen=True) @@ -1815,8 +1817,7 @@ def create_argument_parser(*, settings: bool) -> argparse.ArgumentParser: group = parser.add_argument_group(f"{s.section} configuration options") last_section = s.section - long = s.long if s.long else f"--{s.dest.replace('_', '-')}" - opts = [s.short, long] if s.short else [long] + opts = [s.short, s.long] if s.short else [s.long] group.add_argument( # type: ignore *opts,