Browse Source

etcdctl: fix interactive mode panic

Don't panic if command is given in interactive mode, give a nice error
message instead.

Before:

 $ ./bin/etcdctl watch -i
 <hit return>
 panic: runtime error: index out of range

 goroutine 1 [running]:
 etcdctl/ctlv3/command.watchInteractiveFunc(...)
 	etcd/etcdctl/ctlv3/command/watch_command.go:104 ...

After:

 $ ./bin/etcdctl watch -i
 <hit return>
 Invalid command:  (watch and progress supported)
 foo
 Invalid command foo (only support watch)
Mark McLoughlin 7 years ago
parent
commit
36d7acf330
1 changed files with 4 additions and 0 deletions
  1. 4 0
      etcdctl/ctlv3/command/watch_command.go

+ 4 - 0
etcdctl/ctlv3/command/watch_command.go

@@ -101,6 +101,10 @@ func watchInteractiveFunc(cmd *cobra.Command, osArgs []string, envKey, envRange
 		l = strings.TrimSuffix(l, "\n")
 		l = strings.TrimSuffix(l, "\n")
 
 
 		args := argify(l)
 		args := argify(l)
+		if len(args) < 1 {
+			fmt.Fprintf(os.Stderr, "Invalid command: %s (watch and progress supported)\n", l)
+			continue
+		}
 		switch args[0] {
 		switch args[0] {
 		case "watch":
 		case "watch":
 			if len(args) < 2 && envKey == "" {
 			if len(args) < 2 && envKey == "" {