|
@@ -35,11 +35,15 @@ var funcMap = template.FuncMap{
|
|
|
},
|
|
|
}
|
|
|
|
|
|
-func (cli *DockerCli) getMethod(name string) (func(...string) error, bool) {
|
|
|
- if len(name) == 0 {
|
|
|
- return nil, false
|
|
|
+func (cli *DockerCli) getMethod(args ...string) (func(...string) error, bool) {
|
|
|
+ camelArgs := make([]string, len(args))
|
|
|
+ for i, s := range args {
|
|
|
+ if len(s) == 0 {
|
|
|
+ return nil, false
|
|
|
+ }
|
|
|
+ camelArgs[i] = strings.ToUpper(s[:1]) + strings.ToLower(s[1:])
|
|
|
}
|
|
|
- methodName := "Cmd" + strings.ToUpper(name[:1]) + strings.ToLower(name[1:])
|
|
|
+ methodName := "Cmd" + strings.Join(camelArgs, "")
|
|
|
method := reflect.ValueOf(cli).MethodByName(methodName)
|
|
|
if !method.IsValid() {
|
|
|
return nil, false
|
|
@@ -49,6 +53,12 @@ func (cli *DockerCli) getMethod(name string) (func(...string) error, bool) {
|
|
|
|
|
|
// Cmd executes the specified command
|
|
|
func (cli *DockerCli) Cmd(args ...string) error {
|
|
|
+ if len(args) > 1 {
|
|
|
+ method, exists := cli.getMethod(args[:2]...)
|
|
|
+ if exists {
|
|
|
+ return method(args[2:]...)
|
|
|
+ }
|
|
|
+ }
|
|
|
if len(args) > 0 {
|
|
|
method, exists := cli.getMethod(args[0])
|
|
|
if !exists {
|