diff --git a/cmd/hyperkube/hyperkube.go b/cmd/hyperkube/hyperkube.go index fefbde22f61..1d5511787c6 100644 --- a/cmd/hyperkube/hyperkube.go +++ b/cmd/hyperkube/hyperkube.go @@ -70,6 +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.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 4c29f1df321..4bf5422f3ad 100644 --- a/cmd/hyperkube/server.go +++ b/cmd/hyperkube/server.go @@ -68,6 +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{"-", "_"}) } return s.flags } diff --git a/cmd/kube-version-change/version.go b/cmd/kube-version-change/version.go index db84e9d455a..0a01b9eb60c 100644 --- a/cmd/kube-version-change/version.go +++ b/cmd/kube-version-change/version.go @@ -55,6 +55,7 @@ func isYAML(data []byte) bool { func main() { runtime.GOMAXPROCS(runtime.NumCPU()) + flag.Commandline.SetWordSeparators([]string{"-", "_"}) flag.Parse() if *rewrite != "" { diff --git a/pkg/kubectl/cmd/util/factory.go b/pkg/kubectl/cmd/util/factory.go index baeafc16877..ae383c52b52 100644 --- a/pkg/kubectl/cmd/util/factory.go +++ b/pkg/kubectl/cmd/util/factory.go @@ -17,6 +17,7 @@ limitations under the License. package util import ( + "flag" "fmt" "io" "os" @@ -85,6 +86,7 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory { mapper := kubectl.ShortcutExpander{latest.RESTMapper} flags := pflag.NewFlagSet("", pflag.ContinueOnError) + flags.SetWordSeparators([]string{"-", "_"}) clientConfig := optionalClientConfig if optionalClientConfig == nil { @@ -225,7 +227,7 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory { // BindFlags adds any flags that are common to all kubectl sub commands. func (f *Factory) BindFlags(flags *pflag.FlagSet) { // any flags defined by external projects (not part of pflags) - util.AddAllFlagsToPFlagSet(flags) + util.AddFlagSetToPFlagSet(flag.CommandLine, flags) // This is necessary as github.com/spf13/cobra doesn't support "global" // pflags currently. See https://github.com/spf13/cobra/issues/44. diff --git a/pkg/util/flags.go b/pkg/util/flags.go index 80687267f92..87c3f38e1ea 100644 --- a/pkg/util/flags.go +++ b/pkg/util/flags.go @@ -16,12 +16,11 @@ limitations under the License. package util -import ( - flag "github.com/spf13/pflag" -) +import "github.com/spf13/pflag" // InitFlags normalizes and parses the command line flags func InitFlags() { + pflag.CommandLine.SetWordSeparators([]string{"-", "_"}) AddAllFlagsToPFlags() - flag.Parse() + pflag.Parse() } diff --git a/pkg/util/pflag_import.go b/pkg/util/pflag_import.go index fcef3175de0..71a3523e6f4 100644 --- a/pkg/util/pflag_import.go +++ b/pkg/util/pflag_import.go @@ -79,7 +79,7 @@ func (v *flagValueWrapper) IsBoolFlag() bool { // Imports a 'flag.Flag' into a 'pflag.FlagSet'. The "short" option is unset // and the type is inferred using reflection. -func AddFlagToPFlagSet(f *flag.Flag, fs *pflag.FlagSet) { +func addFlagToPFlagSet(f *flag.Flag, fs *pflag.FlagSet) { if fs.Lookup(f.Name) == nil { fs.Var(wrapFlagValue(f.Value), f.Name, f.Usage) } @@ -88,16 +88,11 @@ func AddFlagToPFlagSet(f *flag.Flag, fs *pflag.FlagSet) { // Adds all of the flags in a 'flag.FlagSet' package flags to a 'pflag.FlagSet'. func AddFlagSetToPFlagSet(fsIn *flag.FlagSet, fsOut *pflag.FlagSet) { fsIn.VisitAll(func(f *flag.Flag) { - AddFlagToPFlagSet(f, fsOut) + addFlagToPFlagSet(f, fsOut) }) } -// Adds all of the top level 'flag' package flags to a 'pflag.FlagSet'. -func AddAllFlagsToPFlagSet(fs *pflag.FlagSet) { - AddFlagSetToPFlagSet(flag.CommandLine, fs) -} - -// Add al of the top level 'flag' package flags to the top level 'pflag' flags. +// Add all of the top level 'flag' package flags to the top level 'pflag' flags. func AddAllFlagsToPFlags() { AddFlagSetToPFlagSet(flag.CommandLine, pflag.CommandLine) }