Bläddra i källkod

etcd: override flag usage func

No need to communicate deprecated flags, so prevent them from getting
printed in the usage info.
Brian Waldon 11 år sedan
förälder
incheckning
bcedef83d3
1 ändrade filer med 19 tillägg och 0 borttagningar
  1. 19 0
      main.go

+ 19 - 0
main.go

@@ -91,6 +91,7 @@ func init() {
 }
 }
 
 
 func main() {
 func main() {
+	flag.CommandLine.Usage = usageWithIgnoredFlagsFunc(flag.CommandLine, deprecated)
 	flag.Parse()
 	flag.Parse()
 
 
 	setFlagsFromEnv()
 	setFlagsFromEnv()
@@ -366,3 +367,21 @@ func (df *deprecatedFlag) Set(s string) error {
 func (df *deprecatedFlag) String() string {
 func (df *deprecatedFlag) String() string {
 	return ""
 	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)
+		})
+	}
+}