in parsers/parameters.go [320:370]
func ResolveParameter(paramName string, param *Parameter, filePath string) (interface{}, error) {
var errorParser error
// default resolved parameter value to empty string
var value interface{} = ""
// Trace Parameter struct before any resolution
//dumpParameter(paramName, param, "BEFORE")
// Parameters can be single OR multi-line declarations which must be processed/validated differently
// Regardless, the following functions will assure that param.Value and param.Type are correctly set
if !param.multiline {
value, errorParser = resolveSingleLineParameter(filePath, paramName, param)
} else {
value, errorParser = resolveMultiLineParameter(filePath, paramName, param)
}
// String value pre-processing (interpolation)
// See if we have any Environment Variable replacement within the parameter's value
// Make sure the parameter's value is a valid, non-empty string
if param.Value != nil && param.Type == "string" {
// perform $ notation replacement on string if any exist
value = wskenv.InterpolateStringWithEnvVar(param.Value)
}
// JSON - Handle both cases, where value 1) is a string containing JSON, 2) is a map of JSON
if param.Value != nil && param.Type == "json" {
value, errorParser = resolveJSONParameter(filePath, paramName, param, value)
}
if param.Value != nil && param.Type == "slice" {
value = wskenv.InterpolateStringWithEnvVar(param.Value)
value = utils.ConvertInterfaceValue(value)
}
// Default value to zero value for the Type
// Do NOT error/terminate as Value may be provided later by a Deployment file.
if value == nil {
value = getTypeDefaultValue(param.Type)
// @TODO(): Need warning message here to warn of default usage, support for warnings (non-fatal)
//msgs := []string{"Parameter [" + paramName + "] is not multiline format."}
//return param.Value, utils.NewParserErr(filePath, nil, msgs)
}
// Trace Parameter struct after resolution
//dumpParameter(paramName, param, "AFTER")
//fmt.Printf("EXIT: Parameter [%s] type=[%v] value=[%v]\n", paramName, param.Type, value)
return value, errorParser
}