Browse code

cli: remove unnecessary initErr type

Signed-off-by: ZhangHang <stevezhang2014@gmail.com>
Signed-off-by: Alexander Morozov <lk4d4@docker.com>

muge authored on 2016/05/16 10:38:04
Showing 1 changed files
... ...
@@ -39,12 +39,7 @@ func New(handlers ...Handler) *Cli {
39 39
 	return cli
40 40
 }
41 41
 
42
-// initErr is an error returned upon initialization of a handler implementing Initializer.
43
-type initErr struct{ error }
44
-
45
-func (err initErr) Error() string {
46
-	return err.Error()
47
-}
42
+var errCommandNotFound = errors.New("command not found")
48 43
 
49 44
 func (cli *Cli) command(args ...string) (func(...string) error, error) {
50 45
 	for _, c := range cli.handlers {
... ...
@@ -54,35 +49,36 @@ func (cli *Cli) command(args ...string) (func(...string) error, error) {
54 54
 		if cmd := c.Command(strings.Join(args, " ")); cmd != nil {
55 55
 			if ci, ok := c.(Initializer); ok {
56 56
 				if err := ci.Initialize(); err != nil {
57
-					return nil, initErr{err}
57
+					return nil, err
58 58
 				}
59 59
 			}
60 60
 			return cmd, nil
61 61
 		}
62 62
 	}
63
-	return nil, errors.New("command not found")
63
+	return nil, errCommandNotFound
64 64
 }
65 65
 
66 66
 // Run executes the specified command.
67 67
 func (cli *Cli) Run(args ...string) error {
68 68
 	if len(args) > 1 {
69 69
 		command, err := cli.command(args[:2]...)
70
-		switch err := err.(type) {
71
-		case nil:
70
+		if err == nil {
72 71
 			return command(args[2:]...)
73
-		case initErr:
74
-			return err.error
72
+		}
73
+		if err != errCommandNotFound {
74
+			return err
75 75
 		}
76 76
 	}
77 77
 	if len(args) > 0 {
78 78
 		command, err := cli.command(args[0])
79
-		switch err := err.(type) {
80
-		case nil:
81
-			return command(args[1:]...)
82
-		case initErr:
83
-			return err.error
79
+		if err != nil {
80
+			if err == errCommandNotFound {
81
+				cli.noSuchCommand(args[0])
82
+				return nil
83
+			}
84
+			return err
84 85
 		}
85
-		cli.noSuchCommand(args[0])
86
+		return command(args[1:]...)
86 87
 	}
87 88
 	return cli.CmdHelp()
88 89
 }
... ...
@@ -110,24 +106,25 @@ func (cli *Cli) Command(name string) func(...string) error {
110 110
 func (cli *Cli) CmdHelp(args ...string) error {
111 111
 	if len(args) > 1 {
112 112
 		command, err := cli.command(args[:2]...)
113
-		switch err := err.(type) {
114
-		case nil:
113
+		if err == nil {
115 114
 			command("--help")
116 115
 			return nil
117
-		case initErr:
118
-			return err.error
116
+		}
117
+		if err != errCommandNotFound {
118
+			return err
119 119
 		}
120 120
 	}
121 121
 	if len(args) > 0 {
122 122
 		command, err := cli.command(args[0])
123
-		switch err := err.(type) {
124
-		case nil:
125
-			command("--help")
126
-			return nil
127
-		case initErr:
128
-			return err.error
123
+		if err != nil {
124
+			if err == errCommandNotFound {
125
+				cli.noSuchCommand(args[0])
126
+				return nil
127
+			}
128
+			return err
129 129
 		}
130
-		cli.noSuchCommand(args[0])
130
+		command("--help")
131
+		return nil
131 132
 	}
132 133
 
133 134
 	if cli.Usage == nil {