Skip to content

Commit 8319ac1

Browse files
authored
chore: simplify template validation (#24825)
1 parent 93ad721 commit 8319ac1

File tree

2 files changed

+12
-17
lines changed

2 files changed

+12
-17
lines changed

util/templates/init.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,13 @@ func fromBytes(b []byte) (Template, error) {
7777
TemplateDefinition: definition,
7878
}
7979

80-
err := tmpl.ResolvePresets()
81-
if err == nil {
82-
err = tmpl.ResolveGroup()
83-
}
84-
if err == nil {
85-
err = tmpl.UpdateParamsWithDefaults()
86-
}
87-
if err == nil {
88-
err = tmpl.Validate()
80+
for _, f := range []func() error{tmpl.ResolvePresets, tmpl.ResolveGroup, tmpl.UpdateParamsWithDefaults, tmpl.Validate} {
81+
if err := f(); err != nil {
82+
return tmpl, fmt.Errorf("template '%s': %w", tmpl.Template, err)
83+
}
8984
}
9085

91-
return tmpl, err
86+
return tmpl, nil
9287
}
9388

9489
func load(class Class) {

util/templates/template.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,19 @@ func (t *Template) UpdateParamsWithDefaults() error {
4141
func (t *Template) Validate() error {
4242
for _, c := range t.Capabilities {
4343
if !slices.Contains(ValidCapabilities, c) {
44-
return fmt.Errorf("invalid capability '%s' in template %s", c, t.Template)
44+
return fmt.Errorf("invalid capability: '%s'", c)
4545
}
4646
}
4747

4848
for _, c := range t.Countries {
4949
if !c.IsValid() {
50-
return fmt.Errorf("invalid country code '%s' in template %s", c, t.Template)
50+
return fmt.Errorf("invalid country code: '%s'", c)
5151
}
5252
}
5353

5454
for _, r := range t.Requirements.EVCC {
5555
if !slices.Contains(ValidRequirements, r) {
56-
return fmt.Errorf("invalid requirement '%s' in template %s", r, t.Template)
56+
return fmt.Errorf("invalid requirement: '%s'", r)
5757
}
5858
}
5959

@@ -63,26 +63,26 @@ func (t *Template) Validate() error {
6363
}
6464

6565
if p.Description.String("en") == "" || p.Description.String("de") == "" {
66-
return fmt.Errorf("description for param %s cant be empty in template %s", p.Name, t.Template)
66+
return fmt.Errorf("param %s: description can't be empty", p.Name)
6767
}
6868

6969
maxLength := 50
7070
actualLength := max(len(p.Description.String("en")), len(p.Description.String("de")))
7171
if actualLength > maxLength {
72-
return fmt.Errorf("description for param %s is too long in template %s. allowed: %d. actual length: %d. use help field for details instead.", p.Name, t.Template, maxLength, actualLength)
72+
return fmt.Errorf("param %s: description too long (%d/%d allowed)- use help instead", p.Name, actualLength, maxLength)
7373
}
7474

7575
switch p.Name {
7676
case ParamUsage:
7777
for _, c := range p.Choice {
7878
if !slices.Contains(UsageStrings(), c) {
79-
return fmt.Errorf("invalid usage choice '%s' in template %s", c, t.Template)
79+
return fmt.Errorf("invalid usage: '%s'", c)
8080
}
8181
}
8282
case ParamModbus:
8383
for _, c := range p.Choice {
8484
if !slices.Contains(ValidModbusChoices, c) {
85-
return fmt.Errorf("invalid modbus choice '%s' in template %s", c, t.Template)
85+
return fmt.Errorf("invalid modbus type: '%s'", c)
8686
}
8787
}
8888
}

0 commit comments

Comments
 (0)