func mapToAppParams(basePath string, yamlMap generic.Map) (models.AppParams, error) { err := checkForNulls(yamlMap) if err != nil { return models.AppParams{}, err } var appParams models.AppParams var errs []error appParams.BuildpackURL = stringValOrDefault(yamlMap, "buildpack", &errs) appParams.DiskQuota = bytesVal(yamlMap, "disk_quota", &errs) domainAry := *sliceOrEmptyVal(yamlMap, "domains", &errs) if domain := stringVal(yamlMap, "domain", &errs); domain != nil { domainAry = append(domainAry, *domain) } appParams.Domains = removeDuplicatedValue(domainAry) hostsArr := *sliceOrEmptyVal(yamlMap, "hosts", &errs) if host := stringVal(yamlMap, "host", &errs); host != nil { hostsArr = append(hostsArr, *host) } appParams.Hosts = removeDuplicatedValue(hostsArr) appParams.Name = stringVal(yamlMap, "name", &errs) appParams.Path = stringVal(yamlMap, "path", &errs) appParams.StackName = stringVal(yamlMap, "stack", &errs) appParams.Command = stringValOrDefault(yamlMap, "command", &errs) appParams.Memory = bytesVal(yamlMap, "memory", &errs) appParams.InstanceCount = intVal(yamlMap, "instances", &errs) appParams.HealthCheckTimeout = intVal(yamlMap, "timeout", &errs) appParams.NoRoute = boolVal(yamlMap, "no-route", &errs) appParams.NoHostname = boolVal(yamlMap, "no-hostname", &errs) appParams.UseRandomRoute = boolVal(yamlMap, "random-route", &errs) appParams.ServicesToBind = sliceOrEmptyVal(yamlMap, "services", &errs) appParams.EnvironmentVars = envVarOrEmptyMap(yamlMap, &errs) appParams.HealthCheckType = stringVal(yamlMap, "health-check-type", &errs) appParams.AppPorts = intSliceVal(yamlMap, "app-ports", &errs) appParams.Routes = parseRoutes(yamlMap, &errs) if appParams.Path != nil { path := *appParams.Path if filepath.IsAbs(path) { path = filepath.Clean(path) } else { path = filepath.Join(basePath, path) } appParams.Path = &path } if len(errs) > 0 { message := "" for _, err := range errs { message = message + fmt.Sprintf("%s\n", err.Error()) } return models.AppParams{}, errors.New(message) } return appParams, nil }