| 593 | } |
| 594 | |
| 595 | func getExec(args []string, params ActionFlags) (*whisk.Exec, error) { |
| 596 | var err error |
| 597 | var code string |
| 598 | var exec *whisk.Exec |
| 599 | |
| 600 | exec = new(whisk.Exec) |
| 601 | kind := params.kind |
| 602 | isNative := params.native |
| 603 | docker := params.docker |
| 604 | mainEntry := params.main |
| 605 | ext := "" |
| 606 | |
| 607 | if len(args) == 2 { |
| 608 | artifact := args[1] |
| 609 | ext = filepath.Ext(artifact) |
| 610 | code, err = ReadFile(artifact) |
| 611 | |
| 612 | if err != nil { |
| 613 | whisk.Debug(whisk.DbgError, "ReadFile(%s) error: %s\n", artifact, err) |
| 614 | return nil, err |
| 615 | } |
| 616 | |
| 617 | if ext == ZIP_EXT || ext == JAVA_EXT || ext == BAL_BIN_EXT { |
| 618 | code = base64.StdEncoding.EncodeToString([]byte(code)) |
| 619 | } |
| 620 | |
| 621 | exec.Code = &code |
| 622 | } else if len(args) == 1 && len(docker) == 0 { |
| 623 | return nil, noArtifactError() |
| 624 | } else if len(args) > 1 { |
| 625 | return nil, noArtifactError() |
| 626 | } |
| 627 | |
| 628 | if len(kind) > 0 { |
| 629 | exec.Kind = kind |
| 630 | } else if len(docker) > 0 || isNative { |
| 631 | exec.Kind = BLACKBOX |
| 632 | if isNative { |
| 633 | exec.Image = "openwhisk/dockerskeleton" |
| 634 | } else { |
| 635 | exec.Image = docker |
| 636 | } |
| 637 | } else if ext == SWIFT_EXT { |
| 638 | exec.Kind = fmt.Sprintf("%s:%s", SWIFT, DEFAULT) |
| 639 | } else if ext == NODE_JS_EXT { |
| 640 | exec.Kind = fmt.Sprintf("%s:%s", NODE_JS, DEFAULT) |
| 641 | } else if ext == PYTHON_EXT { |
| 642 | exec.Kind = fmt.Sprintf("%s:%s", PYTHON, DEFAULT) |
| 643 | } else if ext == JAVA_EXT { |
| 644 | exec.Kind = fmt.Sprintf("%s:%s", JAVA, DEFAULT) |
| 645 | } else if ext == PHP_EXT { |
| 646 | exec.Kind = fmt.Sprintf("%s:%s", PHP, DEFAULT) |
| 647 | } else if ext == RUBY_EXT { |
| 648 | exec.Kind = fmt.Sprintf("%s:%s", RUBY, DEFAULT) |
| 649 | } else if ext == RUST_EXT { |
| 650 | exec.Kind = fmt.Sprintf("%s:%s", RUST, DEFAULT) |
| 651 | } else if ext == GO_EXT { |
| 652 | exec.Kind = fmt.Sprintf("%s:%s", GO, DEFAULT) |