-
Notifications
You must be signed in to change notification settings - Fork 104
/
parameters.go
48 lines (41 loc) · 1.45 KB
/
parameters.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package convert
import (
"fmt"
kudoapi "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1"
"github.com/kudobuilder/kudo/pkg/kudoctl/packages"
utilconvert "github.com/kudobuilder/kudo/pkg/util/convert"
)
// ParametersToCRDType converts parameters to an array of 'Parameter' defined in the KUDO API.
func ParametersToCRDType(parameters packages.Parameters) ([]kudoapi.Parameter, error) {
result := make([]kudoapi.Parameter, 0, len(parameters))
for _, parameter := range parameters {
d, err := utilconvert.WrapParamValue(parameter.Default, parameter.Type)
if err != nil {
return nil, fmt.Errorf("failed to convert %s default for parameter '%s': %w", parameter.Type, parameter.Name, err)
}
var enumValues *[]string
if parameter.IsEnum() {
var ev []string
for _, v := range parameter.EnumValues() {
vWrapped, err := utilconvert.WrapParamValue(v, parameter.Type)
if err != nil {
return nil, fmt.Errorf("failed to convert %s enum value '%s' for parameter '%s': %w", parameter.Type, v, parameter.Name, err)
}
ev = append(ev, *vWrapped)
}
enumValues = &ev
}
result = append(result, kudoapi.Parameter{
DisplayName: parameter.DisplayName,
Name: parameter.Name,
Description: parameter.Description,
Required: parameter.Required,
Default: d,
Trigger: parameter.Trigger,
Type: parameter.Type,
Immutable: parameter.Immutable,
Enum: enumValues,
})
}
return result, nil
}