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

Method ValidateResolve

codersdk/richparameters.go:195–221  ·  view source on GitHub ↗

ValidateResolve checks the provided value, v, against the parameter, p, and the previous build. If v is nil, it also resolves the correct value. It returns the value of the parameter, if valid, and an error if invalid.

(p TemplateVersionParameter, v *WorkspaceBuildParameter)

Source from the content-addressed store, hash-verified

193// ValidateResolve checks the provided value, v, against the parameter, p, and the previous build. If v is nil, it also
194// resolves the correct value. It returns the value of the parameter, if valid, and an error if invalid.
195func (r *ParameterResolver) ValidateResolve(p TemplateVersionParameter, v *WorkspaceBuildParameter) (value string, err error) {
196 prevV := r.findLastValue(p)
197 if !p.Mutable && v != nil && prevV != nil && v.Value != prevV.Value {
198 return "", xerrors.Errorf("Parameter %q is not mutable, so it can't be updated after creating a workspace.", p.Name)
199 }
200 if p.Required && v == nil && prevV == nil {
201 return "", xerrors.Errorf("Parameter %q is required but not provided", p.Name)
202 }
203 // First, the provided value
204 resolvedValue := v
205 // Second, previous value if not ephemeral
206 if resolvedValue == nil && !p.Ephemeral {
207 resolvedValue = prevV
208 }
209 // Last, default value
210 if resolvedValue == nil {
211 resolvedValue = &WorkspaceBuildParameter{
212 Name: p.Name,
213 Value: p.DefaultValue,
214 }
215 }
216 err = ValidateWorkspaceBuildParameter(p, resolvedValue, prevV)
217 if err != nil {
218 return "", err
219 }
220 return resolvedValue.Value, nil
221}
222
223// Resolve returns the value of the parameter. It does not do any validation,
224// and is meant for use with the new dynamic parameters code path.

Calls 3

findLastValueMethod · 0.95
ErrorfMethod · 0.45