Browse Source

Merge pull request #1150 from bcwaldon/deprecated-flags

Slurp up deprecated flags, logging a warning
Brian Waldon 11 years ago
parent
commit
bbbd5fd5ec
1 changed files with 55 additions and 0 deletions
  1. 55 0
      main.go

+ 55 - 0
main.go

@@ -52,6 +52,20 @@ var (
 
 	clientTLSInfo = transport.TLSInfo{}
 	peerTLSInfo   = transport.TLSInfo{}
+
+	deprecated = []string{
+		"config",
+		"peers-file",
+		"peer-heartbeat-interval",
+		"peer-election-timeout",
+		"max-result-buffer",
+		"max-retry-attempts",
+		"retry-interval",
+		"snapshot",
+		"cluster-active-size",
+		"cluster-remove-delay",
+		"cluster-sync-interval",
+	}
 )
 
 func init() {
@@ -70,9 +84,14 @@ func init() {
 	flag.StringVar(&peerTLSInfo.CAFile, "peer-ca-file", "", "Path to the peer server TLS CA file.")
 	flag.StringVar(&peerTLSInfo.CertFile, "peer-cert-file", "", "Path to the peer server TLS cert file.")
 	flag.StringVar(&peerTLSInfo.KeyFile, "peer-key-file", "", "Path to the peer server TLS key file.")
+
+	for _, f := range deprecated {
+		flag.Var(&deprecatedFlag{f}, f, "No longer supported.")
+	}
 }
 
 func main() {
+	flag.CommandLine.Usage = usageWithIgnoredFlagsFunc(flag.CommandLine, deprecated)
 	flag.Parse()
 
 	setFlagsFromEnv()
@@ -330,3 +349,39 @@ func setFlagsFromEnv() {
 
 	})
 }
+
+type deprecatedFlag struct {
+	name string
+}
+
+// IsBoolFlag is defined to allow the flag to be defined without an argument
+func (df *deprecatedFlag) IsBoolFlag() bool {
+	return true
+}
+
+func (df *deprecatedFlag) Set(s string) error {
+	log.Printf("WARNING: flag \"-%s\" is no longer supported.", df.name)
+	return nil
+}
+
+func (df *deprecatedFlag) String() string {
+	return ""
+}
+
+func usageWithIgnoredFlagsFunc(fs *flag.FlagSet, ignore []string) func() {
+	iMap := make(map[string]struct{}, len(ignore))
+	for _, name := range ignore {
+		iMap[name] = struct{}{}
+	}
+
+	return func() {
+		fs.VisitAll(func(f *flag.Flag) {
+			if _, ok := iMap[f.Name]; ok {
+				return
+			}
+
+			format := "  -%s=%s: %s\n"
+			fmt.Fprintf(os.Stderr, format, f.Name, f.DefValue, f.Usage)
+		})
+	}
+}