From 2ca8ae8e5f1a1240ce9bbb6732ae929369692a70 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 17 Aug 2022 15:46:15 +0530 Subject: [PATCH] normalize flag names so that underscores are interchangeable with hyphens --- gen-rc-go.py | 4 ++-- tools/cli/infrastructure.go | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gen-rc-go.py b/gen-rc-go.py index 17bfa7c6f..8d2007ebd 100755 --- a/gen-rc-go.py +++ b/gen-rc-go.py @@ -30,7 +30,7 @@ class Option: short = flags[0][1:] long = flags[-1][2:] if not long: - raise SystemExit(f'No long flag for {x} with flags {flags}') + raise TypeError(f'No long flag for {x} with flags {flags}') self.short, self.long = short, long self.usage = serialize_as_go_string(x['help'].strip()) self.type = x['type'] @@ -70,7 +70,7 @@ class Option: return f'cli.ChoicesP({base}, "{self.long}", "{self.short}", "{self.usage}", {cx})' return f'cli.Choices({base}, "{self.long}", "{self.usage}", {cx})' else: - raise KeyError(f'Unknown type of CLI option: {self.type}') + raise TypeError(f'Unknown type of CLI option: {self.type} for {self.long}') def build_go_code(name: str, cmd: RemoteCommand, seq: OptionSpecSeq, template: str) -> str: diff --git a/tools/cli/infrastructure.go b/tools/cli/infrastructure.go index 54787080d..ecdfae9fa 100644 --- a/tools/cli/infrastructure.go +++ b/tools/cli/infrastructure.go @@ -402,6 +402,9 @@ func Init(root *cobra.Command) { root.SetHelpFunc(show_help) root.SetHelpCommand(&cobra.Command{Hidden: true}) root.CompletionOptions.DisableDefaultCmd = true + root.SetGlobalNormalizationFunc(func(fs *pflag.FlagSet, name string) pflag.NormalizedName { + return pflag.NormalizedName(strings.ReplaceAll(name, "_", "-")) + }) } func Execute(root *cobra.Command) error {