(t *ast.Task)
| 181 | } |
| 182 | |
| 183 | func (e *Executor) areTaskRequiredVarsAllowedValuesSet(t *ast.Task) error { |
| 184 | if t.Requires == nil || len(t.Requires.Vars) == 0 { |
| 185 | return nil |
| 186 | } |
| 187 | |
| 188 | var notAllowedValuesVars []errors.NotAllowedVar |
| 189 | for _, requiredVar := range t.Requires.Vars { |
| 190 | varValue, _ := t.Vars.Get(requiredVar.Name) |
| 191 | |
| 192 | enumValues := getEnumValues(requiredVar.Enum) |
| 193 | value, isString := varValue.Value.(string) |
| 194 | if isString && len(enumValues) > 0 && !slices.Contains(enumValues, value) { |
| 195 | notAllowedValuesVars = append(notAllowedValuesVars, errors.NotAllowedVar{ |
| 196 | Value: value, |
| 197 | Enum: enumValues, |
| 198 | Name: requiredVar.Name, |
| 199 | }) |
| 200 | } |
| 201 | } |
| 202 | |
| 203 | if len(notAllowedValuesVars) > 0 { |
| 204 | return &errors.TaskNotAllowedVarsError{ |
| 205 | TaskName: t.Name(), |
| 206 | NotAllowedVars: notAllowedValuesVars, |
| 207 | } |
| 208 | } |
| 209 | |
| 210 | return nil |
| 211 | } |
| 212 | |
| 213 | func getEnumValues(e *ast.Enum) []string { |
| 214 | if e == nil { |
no test coverage detected