From 1d0b6ee5f57724486f970cb972b7b4f4e21c3770 Mon Sep 17 00:00:00 2001 From: Joe Beda Date: Wed, 14 Jan 2015 14:54:39 -0800 Subject: [PATCH] Fix up logging flags for kubectl. --- pkg/kubectl/cmd/cmd.go | 4 ++++ pkg/util/logs.go | 5 +++-- pkg/util/pflag_import.go | 9 +++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pkg/kubectl/cmd/cmd.go b/pkg/kubectl/cmd/cmd.go index 7ba3011fb45..30a5c8b404e 100644 --- a/pkg/kubectl/cmd/cmd.go +++ b/pkg/kubectl/cmd/cmd.go @@ -143,6 +143,10 @@ func (f *Factory) BindFlags(flags *pflag.FlagSet) { // any flags defined by external projects (not part of pflags) util.AddAllFlagsToPFlagSet(flags) + // This is necessary as github.com/spf13/cobra doesn't support "global" + // pflags currently. See https://github.com/spf13/cobra/issues/44. + util.AddPFlagSetToPFlagSet(pflag.CommandLine, flags) + if f.flags != nil { f.flags.VisitAll(func(flag *pflag.Flag) { flags.AddFlag(flag) diff --git a/pkg/util/logs.go b/pkg/util/logs.go index 2e88e20065a..2f331dcb62a 100644 --- a/pkg/util/logs.go +++ b/pkg/util/logs.go @@ -17,14 +17,15 @@ limitations under the License. package util import ( + "flag" "log" "time" "github.com/golang/glog" - flag "github.com/spf13/pflag" + "github.com/spf13/pflag" ) -var logFlushFreq = flag.Duration("log_flush_frequency", 5*time.Second, "Maximum number of seconds between log flushes") +var logFlushFreq = pflag.Duration("log_flush_frequency", 5*time.Second, "Maximum number of seconds between log flushes") // TODO(thockin): This is temporary until we agree on log dirs and put those into each cmd. func init() { diff --git a/pkg/util/pflag_import.go b/pkg/util/pflag_import.go index 41b333b8afb..19bfa283cf2 100644 --- a/pkg/util/pflag_import.go +++ b/pkg/util/pflag_import.go @@ -87,3 +87,12 @@ func AddAllFlagsToPFlagSet(fs *pflag.FlagSet) { func AddAllFlagsToPFlags() { AddFlagSetToPFlagSet(flag.CommandLine, pflag.CommandLine) } + +// Merge all of the flags from fsFrom into fsTo. +func AddPFlagSetToPFlagSet(fsFrom *pflag.FlagSet, fsTo *pflag.FlagSet) { + fsFrom.VisitAll(func(f *pflag.Flag) { + if fsTo.Lookup(f.Name) == nil { + fsTo.AddFlag(f) + } + }) +}