From a1f648e5db1c2eba5315c0eadd8392b22c2c39d0 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Thu, 4 Dec 2014 17:07:04 -0800 Subject: [PATCH] etcdmain: format usage --- etcdmain/etcd.go | 6 +++- etcdmain/help.go | 80 +++++++++++++++++++++++++++++++++++++++++++++++ pkg/flags/flag.go | 18 ----------- 3 files changed, 85 insertions(+), 19 deletions(-) create mode 100644 etcdmain/help.go diff --git a/etcdmain/etcd.go b/etcdmain/etcd.go index e3b965b0d..a75f8386d 100644 --- a/etcdmain/etcd.go +++ b/etcdmain/etcd.go @@ -105,6 +105,11 @@ var ( ) func init() { + fs.Usage = func() { + fmt.Println(usageline) + fmt.Println(flagsline) + } + fs.Var(clusterStateFlag, "initial-cluster-state", "Initial cluster configuration for bootstrapping") if err := clusterStateFlag.Set(clusterStateFlagNew); err != nil { // Should never happen. @@ -152,7 +157,6 @@ func init() { } func Main() { - fs.Usage = flags.UsageWithIgnoredFlagsFunc(fs, ignored) perr := fs.Parse(os.Args[1:]) switch perr { case nil: diff --git a/etcdmain/help.go b/etcdmain/help.go new file mode 100644 index 000000000..1e5d19808 --- /dev/null +++ b/etcdmain/help.go @@ -0,0 +1,80 @@ +package etcdmain + +var ( + usageline = `usage: etcd [flags] + start an etcd server + + etcd --version + show the version of etcd + + etcd -h | --help + show the help information about etcd + ` + flagsline = ` +member flags: + + --name 'default' + human-readable name for this member. + --data-dir '${name}.etcd' + path to the data directory. + --snapshot-count '10000' + number of committed transactions to trigger a snapshot to disk. + --listen-peer-urls 'http://localhost:2380,http://localhost:7001' + list of URLs to listen on for peer traffic. + --listen-client-urls 'http://localhost:2379,http://localhost:4001' + list of URLs to listen on for client traffic. + -cors '' + comma-separated whitelist of origins for CORS (cross-origin resource sharing). + + +clustering flags: + + --initial-advertise-peer-urls 'http://localhost:2380,http://localhost:7001' + list of this member's peer URLs to advertise to the rest of the cluster. + --initial-cluster 'default=http://localhost:2380,default=http://localhost:7001' + initial cluster configuration for bootstrapping. + --initial-cluster-state 'new' + initial cluster state ('new' or 'existing'). + --initial-cluster-token 'etcd-cluster' + initial cluster token for the etcd cluster during bootstrap. + --advertise-client-urls 'http://localhost:2379,http://localhost:4001' + list of this member's client URLs to advertise to the rest of the cluster. + --discovery '' + discovery URL used to bootstrap the cluster. + --discovery-fallback 'proxy' + expected behavior ('exit' or 'proxy') when discovery services fails. + --discovery-proxy '' + HTTP proxy to use for traffic to discovery service. + + +proxy flags: + + --proxy 'off' + proxy mode setting ('off', 'readonly' or 'on'). + + +security flags: + + --ca-file '' + path to the client server TLS CA file. + --cert-file '' + path to the client server TLS cert file. + --key-file '' + path to the client server TLS key file. + --peer-ca-file '' + path to the peer server TLS CA file. + --peer-cert-file '' + path to the peer server TLS cert file. + --peer-key-file '' + path to the peer server TLS key file. + + +unsafe flags: + +Please be CAUTIOUS to use unsafe flags because it will break the guarantee given +by consensus protocol. + + --force-new-cluster 'false' + force to create a new one-member cluster. +` +) diff --git a/pkg/flags/flag.go b/pkg/flags/flag.go index d8f11c6a7..d7e3886de 100644 --- a/pkg/flags/flag.go +++ b/pkg/flags/flag.go @@ -62,24 +62,6 @@ func (f *IgnoredFlag) 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) - }) - } -} - // SetFlagsFromEnv parses all registered flags in the given flagset, // and if they are not already set it attempts to set their values from // environment variables. Environment variables take the name of the flag but