MCPcopy Index your code
hub / github.com/coder/coder / validateBuildParameter

Function validateBuildParameter

codersdk/richparameters.go:74–122  ·  view source on GitHub ↗
(richParameter TemplateVersionParameter, buildParameter *WorkspaceBuildParameter, lastBuildParameter *WorkspaceBuildParameter)

Source from the content-addressed store, hash-verified

72}
73
74func 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.
125func inOptionSet(richParameter TemplateVersionParameter, value string) bool {

Callers 1

Calls 5

inOptionSetFunction · 0.85
parameterValuesAsArrayFunction · 0.85
validationEnabledFunction · 0.85
ValidMethod · 0.65
ErrorfMethod · 0.45

Tested by

no test coverage detected