...
1
16
17 package flag
18
19 import (
20 goflag "flag"
21 "strings"
22
23 "github.com/spf13/pflag"
24 "k8s.io/klog/v2"
25 )
26
27 var underscoreWarnings = make(map[string]bool)
28
29
30 func WordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName {
31 if strings.Contains(name, "_") {
32 return pflag.NormalizedName(strings.Replace(name, "_", "-", -1))
33 }
34 return pflag.NormalizedName(name)
35 }
36
37
38 func WarnWordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName {
39 if strings.Contains(name, "_") {
40 nname := strings.Replace(name, "_", "-", -1)
41 if _, alreadyWarned := underscoreWarnings[name]; !alreadyWarned {
42 klog.Warningf("using an underscore in a flag name is not supported. %s has been converted to %s.", name, nname)
43 underscoreWarnings[name] = true
44 }
45
46 return pflag.NormalizedName(nname)
47 }
48 return pflag.NormalizedName(name)
49 }
50
51
52 func InitFlags() {
53 pflag.CommandLine.SetNormalizeFunc(WordSepNormalizeFunc)
54 pflag.CommandLine.AddGoFlagSet(goflag.CommandLine)
55 pflag.Parse()
56 pflag.VisitAll(func(flag *pflag.Flag) {
57 klog.V(2).Infof("FLAG: --%s=%q", flag.Name, flag.Value)
58 })
59 }
60
61
62 func PrintFlags(flags *pflag.FlagSet) {
63 flags.VisitAll(func(flag *pflag.Flag) {
64 klog.V(1).Infof("FLAG: --%s=%q", flag.Name, flag.Value)
65 })
66 }
67
View as plain text