in commands/action.go [709:761]
func saveCode(action whisk.Action, filename string) (err error) {
var code string
var runtime string
var exec whisk.Exec
exec = *action.Exec
runtime = strings.Split(exec.Kind, ":")[0]
if strings.ToLower(runtime) == BLACKBOX && exec.Code == nil && *exec.Binary == false {
return cannotSaveImageError()
} else if strings.ToLower(runtime) == SEQUENCE {
return cannotSaveSequenceError()
}
if exec.Code != nil {
code = *exec.Code
}
if *exec.Binary {
decoded, _ := base64.StdEncoding.DecodeString(code)
code = string(decoded)
if len(filename) == 0 {
filename = action.Name + getBinaryKindExtension(runtime)
}
} else {
if len(filename) == 0 {
filename = action.Name + getKindExtension(runtime)
}
}
if exists, err := FileExists(filename); err != nil {
return err
} else if exists {
return fileExistsError(filename)
}
if err := writeFile(filename, code); err != nil {
return err
}
pwd, err := os.Getwd()
if err != nil {
whisk.Debug(whisk.DbgError, "os.Getwd() error: %s\n", err)
return err
}
savedPath := fmt.Sprintf("%s%s%s", pwd, string(os.PathSeparator), filename)
printSavedActionCodeSuccess(savedPath)
return nil
}