Browse Source

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"
```
Danny Sauer 7 years ago
parent
commit
36d227c9e5
1 changed files with 10 additions and 1 deletions
  1. 10 1
      etcdctl/ctlv3/command/member_command.go

+ 10 - 1
etcdctl/ctlv3/command/member_command.go

@@ -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 {