chore: simplify render mode

This commit is contained in:
andig 2024-01-27 18:18:13 +01:00
parent 789497d94c
commit f6f4e30fb5
8 changed files with 21 additions and 19 deletions

View file

@ -52,7 +52,7 @@ func (d *DeviceTest) Test() (DeviceTestResult, error) {
// configure creates a configured device from a template so we can test it
func (d *DeviceTest) configure() (interface{}, error) {
b, _, err := d.Template.RenderResult(templates.TemplateRenderModeInstance, d.ConfigValues)
b, _, err := d.Template.RenderResult(templates.RenderModeInstance, d.ConfigValues)
if err != nil {
return nil, err
}

View file

@ -97,7 +97,7 @@ func (c *CmdConfigure) processDeviceValues(values map[string]interface{}, templa
}
}
b, _, err := templateItem.RenderResult(templates.TemplateRenderModeInstance, values)
b, _, err := templateItem.RenderResult(templates.RenderModeInstance, values)
if err != nil {
c.addedDeviceIndex--
return device, err
@ -523,5 +523,5 @@ func (c *CmdConfigure) processModbusConfig(templateItem *templates.Template) {
templateItem.ModbusParams(choiceTypes[index], values)
// update the modbus default values
templateItem.ModbusValues(templates.TemplateRenderModeInstance, values)
templateItem.ModbusValues(templates.RenderModeInstance, values)
}

View file

@ -18,7 +18,7 @@ var documentationModbusTmpl string
// RenderDocumentation renders the documentation template
func (t *Template) RenderDocumentation(product Product, lang string) ([]byte, error) {
values := t.Defaults(TemplateRenderModeDocs)
values := t.Defaults(RenderModeDocs)
for index, p := range t.Params {
for k, v := range values {
@ -51,7 +51,7 @@ func (t *Template) RenderDocumentation(product Product, lang string) ([]byte, er
}
modbusData := make(map[string]interface{})
t.ModbusValues(TemplateRenderModeDocs, modbusData)
t.ModbusValues(RenderModeDocs, modbusData)
out := new(bytes.Buffer)
if err := modbusTmpl.Execute(out, modbusData); err != nil {

View file

@ -30,7 +30,7 @@ func RenderInstance(class Class, other map[string]interface{}) (*Instance, error
return nil, err
}
b, _, err := tmpl.RenderResult(TemplateRenderModeInstance, other)
b, _, err := tmpl.RenderResult(RenderModeInstance, other)
if err != nil {
return nil, util.NewConfigError(err)
}

View file

@ -13,7 +13,7 @@ import (
func test(t *testing.T, tmpl Template, values map[string]interface{}, cb func(values map[string]interface{})) {
t.Helper()
b, _, err := tmpl.RenderResult(TemplateRenderModeInstance, values)
b, _, err := tmpl.RenderResult(RenderModeInstance, values)
if err != nil {
t.Log(string(b))
t.Error(err)
@ -40,7 +40,7 @@ func TestClass(t *testing.T, class Class, instantiate func(t *testing.T, values
tmpl := tmpl
// set default values for all params
values := tmpl.Defaults(TemplateRenderModeUnitTest)
values := tmpl.Defaults(RenderModeUnitTest)
// set modbus default test values
if values[ParamModbus] != nil {
@ -51,7 +51,7 @@ func TestClass(t *testing.T, class Class, instantiate func(t *testing.T, values
} else {
values[ModbusKeyRS485TCPIP] = true
}
tmpl.ModbusValues(TemplateRenderModeUnitTest, values)
tmpl.ModbusValues(RenderModeUnitTest, values)
}
// set the template value which is needed for rendering

View file

@ -156,7 +156,7 @@ func (t *Template) GroupTitle(lang string) string {
}
// Defaults returns a map of default values for the template
func (t *Template) Defaults(renderMode string) map[string]interface{} {
func (t *Template) Defaults(renderMode int) map[string]interface{} {
values := make(map[string]interface{})
for _, p := range t.Params {
values[p.Name] = p.DefaultValue(renderMode)
@ -268,7 +268,7 @@ func (t *Template) RenderProxyWithValues(values map[string]interface{}, lang str
}
// RenderResult renders the result template to instantiate the proxy
func (t *Template) RenderResult(renderMode string, other map[string]interface{}) ([]byte, map[string]interface{}, error) {
func (t *Template) RenderResult(renderMode int, other map[string]interface{}) ([]byte, map[string]interface{}, error) {
values := t.Defaults(renderMode)
if err := util.DecodeOther(other, &values); err != nil {
return nil, values, err

View file

@ -35,7 +35,7 @@ func (t *Template) ModbusParams(modbusType string, values map[string]interface{}
}
// ModbusValues adds the values required for modbus.tpl to the value map
func (t *Template) ModbusValues(renderMode string, values map[string]interface{}) {
func (t *Template) ModbusValues(renderMode int, values map[string]interface{}) {
choices := t.ModbusChoices()
if len(choices) == 0 {
return
@ -95,7 +95,7 @@ func (t *Template) ModbusValues(renderMode string, values map[string]interface{}
// for modbus params the default value is carried
// using the parameter default, not the value
// TODO figure out why that's necessary
if renderMode == TemplateRenderModeInstance {
if renderMode == RenderModeInstance {
t.SetParamDefault(p.Name, defaultValue)
} else {
values[p.Name] = defaultValue
@ -103,7 +103,7 @@ func (t *Template) ModbusValues(renderMode string, values map[string]interface{}
}
}
if renderMode == TemplateRenderModeDocs {
if renderMode == RenderModeDocs {
values[iface] = true
}
}

View file

@ -39,10 +39,12 @@ const (
ModbusParamNameHost = "host"
ModbusParamNamePort = "port"
ModbusParamNameRTU = "rtu"
)
TemplateRenderModeDocs = "docs"
TemplateRenderModeUnitTest = "unittest"
TemplateRenderModeInstance = "instance"
const (
RenderModeDocs int = iota
RenderModeUnitTest
RenderModeInstance
)
var ValidModbusChoices = []string{ModbusChoiceRS485, ModbusChoiceTCPIP}
@ -193,13 +195,13 @@ type Param struct {
}
// DefaultValue returns a default or example value depending on the renderMode
func (p *Param) DefaultValue(renderMode string) interface{} {
func (p *Param) DefaultValue(renderMode int) interface{} {
// return empty list to allow iterating over in template
if p.Type == TypeStringList {
return []string{}
}
if (renderMode == TemplateRenderModeDocs || renderMode == TemplateRenderModeUnitTest) && p.Default == "" {
if (renderMode == RenderModeDocs || renderMode == RenderModeUnitTest) && p.Default == "" {
return p.Example
}