Templates: sort required params first (#26775)

This commit is contained in:
andig 2026-01-21 10:51:24 +01:00 • committed by GitHub
parent aa1fdab0b6
commit 1c49be86fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 16 additions and 1 deletions

View file

@ -14,6 +14,7 @@ params:
description:
en: Modbus Type
de: Modbus Typ
required: true
- name: host
required: true
description:

View file

@ -73,7 +73,7 @@ func fromBytes(b []byte) (Template, error) {
return Template{}, err
}
for _, f := range []func() error{tmpl.ResolvePresets, tmpl.ResolveGroup, tmpl.UpdateParamsWithDefaults, tmpl.UpdateModbusParamsWithDefaults, tmpl.Validate} {
for _, f := range []func() error{tmpl.ResolvePresets, tmpl.ResolveGroup, tmpl.UpdateParamsWithDefaults, tmpl.UpdateModbusParamsWithDefaults, tmpl.SortRequiredParamsFirst, tmpl.Validate} {
if err := f(); err != nil {
return tmpl, fmt.Errorf("template '%s': %w", tmpl.Template, err)
}

View file

@ -65,6 +65,20 @@ func (t *Template) UpdateModbusParamsWithDefaults() error {
return nil
}
func (t *Template) SortRequiredParamsFirst() error {
slices.SortStableFunc(t.Params, func(a, b Param) int {
if a.Required && !b.Required {
return -1
}
if b.Required && !a.Required {
return +1
}
return 0
})
return nil
}
// validate the template (only rudimentary for now)
func (t *Template) Validate() error {
for _, c := range t.Capabilities {