diff --git a/api_params.go b/api_params.go index 6403bc6a26..5f1a338057 100644 --- a/api_params.go +++ b/api_params.go @@ -56,13 +56,13 @@ type APIContainers struct { func (self *APIContainers) ToLegacy() APIContainersOld { return APIContainersOld{ - ID: self.ID, - Image: self.Image, - Command: self.Command, - Created: self.Created, - Status: self.Status, - Ports: displayablePorts(self.Ports), - SizeRw: self.SizeRw, + ID: self.ID, + Image: self.Image, + Command: self.Command, + Created: self.Created, + Status: self.Status, + Ports: displayablePorts(self.Ports), + SizeRw: self.SizeRw, SizeRootFs: self.SizeRootFs, } } diff --git a/commands.go b/commands.go index 050eb567cb..56e15ab2f0 100644 --- a/commands.go +++ b/commands.go @@ -41,9 +41,13 @@ var ( ErrConnectionRefused = errors.New("Can't connect to docker daemon. Is 'docker -d' running on this host?") ) -func (cli *DockerCli) getMethod(name string) (reflect.Method, bool) { +func (cli *DockerCli) getMethod(name string) (func(...string) error, bool) { methodName := "Cmd" + strings.ToUpper(name[:1]) + strings.ToLower(name[1:]) - return reflect.TypeOf(cli).MethodByName(methodName) + method := reflect.ValueOf(cli).MethodByName(methodName) + if !method.IsValid() { + return nil, false + } + return method.Interface().(func(...string) error), true } func ParseCommands(proto, addr string, args ...string) error { @@ -55,14 +59,7 @@ func ParseCommands(proto, addr string, args ...string) error { fmt.Println("Error: Command not found:", args[0]) return cli.CmdHelp(args[1:]...) } - ret := method.Func.CallSlice([]reflect.Value{ - reflect.ValueOf(cli), - reflect.ValueOf(args[1:]), - })[0].Interface() - if ret == nil { - return nil - } - return ret.(error) + return method(args[1:]...) } return cli.CmdHelp(args...) } @@ -73,10 +70,7 @@ func (cli *DockerCli) CmdHelp(args ...string) error { if !exists { fmt.Fprintf(cli.err, "Error: Command not found: %s\n", args[0]) } else { - method.Func.CallSlice([]reflect.Value{ - reflect.ValueOf(cli), - reflect.ValueOf([]string{"--help"}), - })[0].Interface() + method("--help") return nil } }