From ec7bcbb50de89822e423a5950d79c2e4dec60d98 Mon Sep 17 00:00:00 2001 From: Jonathan Boulle Date: Mon, 6 Oct 2014 14:06:51 -0700 Subject: [PATCH] main: fail on peers/peers-file flags --- main.go | 11 +++++++---- pkg/flag.go | 25 +++++++++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index 14958b52e..be8510d1b 100644 --- a/main.go +++ b/main.go @@ -38,7 +38,7 @@ var ( clientTLSInfo = transport.TLSInfo{} peerTLSInfo = transport.TLSInfo{} - deprecated = []string{ + ignored = []string{ "cluster-active-size", "cluster-remove-delay", "cluster-sync-interval", @@ -83,13 +83,16 @@ func init() { flag.Var(&flagtypes.IPAddressPort{}, "peer-addr", "DEPRECATED: Use -advertise-peer-urls instead.") flag.Var(&flagtypes.IPAddressPort{}, "peer-bind-addr", "DEPRECATED: Use -listen-peer-urls instead.") - for _, f := range deprecated { - flag.Var(&pkg.DeprecatedFlag{f}, f, "") + for _, f := range ignored { + flag.Var(&pkg.IgnoredFlag{f}, f, "") } + + flag.Var(&pkg.DeprecatedFlag{"peers"}, "peers", "DEPRECATED: Use -bootstrap-config instead") + flag.Var(&pkg.DeprecatedFlag{"peers-file"}, "peers-file", "DEPRECATED: Use -bootstrap-config instead") } func main() { - flag.Usage = pkg.UsageWithIgnoredFlagsFunc(flag.CommandLine, deprecated) + flag.Usage = pkg.UsageWithIgnoredFlagsFunc(flag.CommandLine, ignored) flag.Parse() if *printVersion { diff --git a/pkg/flag.go b/pkg/flag.go index eecc46d7f..fb8daa4ee 100644 --- a/pkg/flag.go +++ b/pkg/flag.go @@ -12,21 +12,38 @@ import ( "github.com/coreos/etcd/pkg/transport" ) +// DeprecatedFlag encapsulates a flag that may have been previously valid but +// is now deprecated. If a DeprecatedFlag is set, an error occurs. type DeprecatedFlag struct { Name string } +func (f *DeprecatedFlag) Set(_ string) error { + return fmt.Errorf(`flag "-%s" is no longer supported.`, f.Name) +} + +func (f *DeprecatedFlag) String() string { + return "" +} + +// IgnoredFlag encapsulates a flag that may have been previously valid but is +// now ignored. If an IgnoredFlag is set, a warning is printed and +// operation continues. +type IgnoredFlag struct { + Name string +} + // IsBoolFlag is defined to allow the flag to be defined without an argument -func (df *DeprecatedFlag) IsBoolFlag() bool { +func (f *IgnoredFlag) IsBoolFlag() bool { return true } -func (df *DeprecatedFlag) Set(s string) error { - log.Printf("WARNING: flag \"-%s\" is no longer supported.", df.Name) +func (f *IgnoredFlag) Set(s string) error { + log.Printf(`WARNING: flag "-%s" is no longer supported - ignoring.`, f.Name) return nil } -func (df *DeprecatedFlag) String() string { +func (f *IgnoredFlag) String() string { return "" }