(richParameter TemplateVersionParameter, buildParameter *WorkspaceBuildParameter, lastBuildParameter *WorkspaceBuildParameter)
| 72 | } |
| 73 | |
| 74 | func validateBuildParameter(richParameter TemplateVersionParameter, buildParameter *WorkspaceBuildParameter, lastBuildParameter *WorkspaceBuildParameter) error { |
| 75 | var ( |
| 76 | current string |
| 77 | previous *string |
| 78 | ) |
| 79 | |
| 80 | if buildParameter != nil { |
| 81 | current = buildParameter.Value |
| 82 | } |
| 83 | |
| 84 | if lastBuildParameter != nil { |
| 85 | previous = ptr.To(lastBuildParameter.Value) |
| 86 | } |
| 87 | |
| 88 | if richParameter.Required && current == "" { |
| 89 | return xerrors.Errorf("parameter value is required") |
| 90 | } |
| 91 | |
| 92 | if current == "" { // parameter is optional, so take the default value |
| 93 | current = richParameter.DefaultValue |
| 94 | } |
| 95 | |
| 96 | if len(richParameter.Options) > 0 && !inOptionSet(richParameter, current) { |
| 97 | return xerrors.Errorf("parameter value must match one of options: %s", parameterValuesAsArray(richParameter.Options)) |
| 98 | } |
| 99 | |
| 100 | if !validationEnabled(richParameter) { |
| 101 | return nil |
| 102 | } |
| 103 | |
| 104 | var minVal, maxVal int |
| 105 | if richParameter.ValidationMin != nil { |
| 106 | minVal = int(*richParameter.ValidationMin) |
| 107 | } |
| 108 | if richParameter.ValidationMax != nil { |
| 109 | maxVal = int(*richParameter.ValidationMax) |
| 110 | } |
| 111 | |
| 112 | validation := &provider.Validation{ |
| 113 | Min: minVal, |
| 114 | Max: maxVal, |
| 115 | MinDisabled: richParameter.ValidationMin == nil, |
| 116 | MaxDisabled: richParameter.ValidationMax == nil, |
| 117 | Regex: richParameter.ValidationRegex, |
| 118 | Error: richParameter.ValidationError, |
| 119 | Monotonic: string(richParameter.ValidationMonotonic), |
| 120 | } |
| 121 | return validation.Valid(richParameter.Type, current, previous) |
| 122 | } |
| 123 | |
| 124 | // inOptionSet returns if the value given is in the set of options for a parameter. |
| 125 | func inOptionSet(richParameter TemplateVersionParameter, value string) bool { |
no test coverage detected