Skip to content

Commit 70692c2

Browse files
authored
fix: unify parameter validation errors (#8738)
1 parent 2089006 commit 70692c2

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

codersdk/richparameters.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,25 @@ func ValidateWorkspaceBuildParameters(richParameters []TemplateVersionParameter,
2727

2828
err := ValidateWorkspaceBuildParameter(richParameter, buildParameter, lastBuildParameter)
2929
if err != nil {
30-
return xerrors.Errorf("can't validate build parameter %q: %w", richParameter.Name, err)
30+
return err
3131
}
3232
}
3333
return nil
3434
}
3535

3636
func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, buildParameter *WorkspaceBuildParameter, lastBuildParameter *WorkspaceBuildParameter) error {
37+
err := validateBuildParameter(richParameter, buildParameter, lastBuildParameter)
38+
if err != nil {
39+
name := richParameter.Name
40+
if richParameter.DisplayName != "" {
41+
name = richParameter.DisplayName
42+
}
43+
return xerrors.Errorf("can't validate build parameter %q: %w", name, err)
44+
}
45+
return nil
46+
}
47+
48+
func validateBuildParameter(richParameter TemplateVersionParameter, buildParameter *WorkspaceBuildParameter, lastBuildParameter *WorkspaceBuildParameter) error {
3749
var value string
3850

3951
if buildParameter != nil {
@@ -51,22 +63,22 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui
5163
if lastBuildParameter != nil && richParameter.Type == "number" && len(richParameter.ValidationMonotonic) > 0 {
5264
prev, err := strconv.Atoi(lastBuildParameter.Value)
5365
if err != nil {
54-
return xerrors.Errorf("Previous parameter value is not a number: %s", lastBuildParameter.Value)
66+
return xerrors.Errorf("previous parameter value is not a number: %s", lastBuildParameter.Value)
5567
}
5668

5769
current, err := strconv.Atoi(buildParameter.Value)
5870
if err != nil {
59-
return xerrors.Errorf("Current parameter value is not a number: %s", buildParameter.Value)
71+
return xerrors.Errorf("current parameter value is not a number: %s", buildParameter.Value)
6072
}
6173

6274
switch richParameter.ValidationMonotonic {
6375
case MonotonicOrderIncreasing:
6476
if prev > current {
65-
return xerrors.Errorf("Parameter value must be equal or greater than previous value: %d", prev)
77+
return xerrors.Errorf("parameter value must be equal or greater than previous value: %d", prev)
6678
}
6779
case MonotonicOrderDecreasing:
6880
if prev < current {
69-
return xerrors.Errorf("Parameter value must be equal or lower than previous value: %d", prev)
81+
return xerrors.Errorf("parameter value must be equal or lower than previous value: %d", prev)
7082
}
7183
}
7284
}
@@ -81,7 +93,7 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui
8193
}
8294

8395
if !matched {
84-
return xerrors.Errorf("Parameter value must match one of options: %s", parameterValuesAsArray(richParameter.Options))
96+
return xerrors.Errorf("parameter value must match one of options: %s", parameterValuesAsArray(richParameter.Options))
8597
}
8698
return nil
8799
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy