diff --git a/cmd/hyperkube/hyperkube.go b/cmd/hyperkube/hyperkube.go index 1d5511787c6..de65b3fea74 100644 --- a/cmd/hyperkube/hyperkube.go +++ b/cmd/hyperkube/hyperkube.go @@ -70,7 +70,7 @@ func (hk *HyperKube) Flags() *pflag.FlagSet { if hk.baseFlags == nil { hk.baseFlags = pflag.NewFlagSet(hk.Name, pflag.ContinueOnError) hk.baseFlags.SetOutput(ioutil.Discard) - hk.baseFlags.SetWordSeparators([]string{"-", "_"}) + hk.baseFlags.SetNormalizeFunc(util.WordSepNormalizeFunc) hk.baseFlags.BoolVarP(&hk.helpFlagVal, "help", "h", false, "help for "+hk.Name) // These will add all of the "global" flags (defined with both the diff --git a/cmd/hyperkube/server.go b/cmd/hyperkube/server.go index 4bf5422f3ad..68ec7e663ef 100644 --- a/cmd/hyperkube/server.go +++ b/cmd/hyperkube/server.go @@ -68,7 +68,7 @@ func (s *Server) Flags() *pflag.FlagSet { if s.flags == nil { s.flags = pflag.NewFlagSet(s.Name(), pflag.ContinueOnError) s.flags.SetOutput(ioutil.Discard) - s.flags.SetWordSeparators([]string{"-", "_"}) + s.flags.SetNormalizeFunc(util.WordSepNormalizeFunc) } return s.flags } diff --git a/cmd/kube-version-change/version.go b/cmd/kube-version-change/version.go index 9e6936ea80b..b466c6b299b 100644 --- a/cmd/kube-version-change/version.go +++ b/cmd/kube-version-change/version.go @@ -31,6 +31,7 @@ import ( _ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta1" _ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta2" _ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta3" + "github.com/GoogleCloudPlatform/kubernetes/pkg/util" "github.com/ghodss/yaml" flag "github.com/spf13/pflag" @@ -55,7 +56,7 @@ func isYAML(data []byte) bool { func main() { runtime.GOMAXPROCS(runtime.NumCPU()) - flag.CommandLine.SetWordSeparators([]string{"-", "_"}) + flag.CommandLine.SetNormalizeFunc(util.WordSepNormalizeFunc) flag.Parse() if *rewrite != "" { diff --git a/pkg/kubectl/cmd/util/factory.go b/pkg/kubectl/cmd/util/factory.go index 312230b395c..eb7b4bbd448 100644 --- a/pkg/kubectl/cmd/util/factory.go +++ b/pkg/kubectl/cmd/util/factory.go @@ -86,7 +86,7 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory { mapper := kubectl.ShortcutExpander{latest.RESTMapper} flags := pflag.NewFlagSet("", pflag.ContinueOnError) - flags.SetWordSeparators([]string{"-", "_"}) + flags.SetNormalizeFunc(util.WordSepNormalizeFunc) clientConfig := optionalClientConfig if optionalClientConfig == nil { diff --git a/pkg/util/flags.go b/pkg/util/flags.go index 87c3f38e1ea..c22ea1d581c 100644 --- a/pkg/util/flags.go +++ b/pkg/util/flags.go @@ -16,11 +16,23 @@ limitations under the License. package util +import "strings" + import "github.com/spf13/pflag" +func WordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName { + from := []string{"-", "_"} + to := "." + for _, sep := range from { + name = strings.Replace(name, sep, to, -1) + } + // Type convert to indicate normalization has been done. + return pflag.NormalizedName(name) +} + // InitFlags normalizes and parses the command line flags func InitFlags() { - pflag.CommandLine.SetWordSeparators([]string{"-", "_"}) + pflag.CommandLine.SetNormalizeFunc(WordSepNormalizeFunc) AddAllFlagsToPFlags() pflag.Parse() }