etcdctl: Prettier error handling in member add

Maintain existing error message for not-enough-args
Add "too many args" if too many args
Add more helpful error message if v2 syntax was used

New output:
```
sauer@host:~/dev/etcd$ ./bin/etcdctl --endpoints http://localhost:5001 member add
Error: member name not provided.
sauer@host:~/dev/etcd$ ./bin/etcdctl --endpoints http://localhost:5001 member add node2 node2
Error: too many arguments
sauer@host:~/dev/etcd$ ./bin/etcdctl --endpoints http://localhost:5001 member add node2 http://localhost:6002
Error: too many arguments, did you mean "--peer-urls http://localhost:6002"
sauer@host:~/dev/etcd$ ./bin/etcdctl --endpoints http://localhost:5001 member add http://localhost:6002 node2
Error: too many arguments, did you mean "--peer-urls http://localhost:6002"
```
This commit is contained in:
Danny Sauer 2018-09-25 16:16:57 -05:00
parent 2cf4736621
commit 36d227c9e5
No known key found for this signature in database
GPG Key ID: B84CCF5DF028A5A7

View File

@ -96,9 +96,18 @@ The items in the lists are ID, Status, Name, Peer Addrs, Client Addrs.
// memberAddCommandFunc executes the "member add" command.
func memberAddCommandFunc(cmd *cobra.Command, args []string) {
if len(args) != 1 {
if len(args) < 1 {
ExitWithError(ExitBadArgs, fmt.Errorf("member name not provided."))
}
if len(args) > 1 {
errorstring := "too many arguments"
for _, v := range args {
if strings.HasPrefix(strings.ToLower(v), "http"){
errorstring += ", did you mean \"--peer-urls " + v + "\""
}
}
ExitWithError(ExitBadArgs, fmt.Errorf(errorstring))
}
newMemberName := args[0]
if len(memberPeerURLs) == 0 {