Improve configuration error messages

This commit is contained in:
andig 2020-12-04 14:48:34 +01:00
parent 446936d44e
commit a0f2a35f35
6 changed files with 30 additions and 29 deletions

View file

@ -39,26 +39,25 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Charger, error
}
status, err := provider.NewStringGetterFromConfig(cc.Status)
var enabled func() (bool, error)
if err == nil {
enabled, err = provider.NewBoolGetterFromConfig(cc.Enabled)
}
var enable func(bool) error
if err == nil {
enable, err = provider.NewBoolSetterFromConfig("enable", cc.Enable)
}
var maxcurrent func(int64) error
if err == nil {
maxcurrent, err = provider.NewIntSetterFromConfig("maxcurrent", cc.MaxCurrent)
}
if err != nil {
return nil, err
}
enabled, err := provider.NewBoolGetterFromConfig(cc.Enabled)
if err != nil {
return nil, fmt.Errorf("enabled: %w", err)
}
enable, err := provider.NewBoolSetterFromConfig("enable", cc.Enable)
if err != nil {
return nil, fmt.Errorf("enable: %w", err)
}
maxcurrent, err := provider.NewIntSetterFromConfig("maxcurrent", cc.MaxCurrent)
if err != nil {
return nil, fmt.Errorf("maxcurrent: %w", err)
}
return NewConfigurable(status, enabled, enable, maxcurrent)
}

View file

@ -36,7 +36,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error)
power, err := provider.NewFloatGetterFromConfig(cc.Power)
if err != nil {
return nil, err
return nil, fmt.Errorf("power: %w", err)
}
m, _ := NewConfigurable(power)
@ -45,7 +45,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error)
if cc.Energy != nil {
m.totalEnergyG, err = provider.NewFloatGetterFromConfig(*cc.Energy)
if err != nil {
return nil, err
return nil, fmt.Errorf("energy: %w", err)
}
}
@ -55,10 +55,10 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error)
return nil, errors.New("need 3 currents")
}
for _, cc := range cc.Currents {
for idx, cc := range cc.Currents {
c, err := provider.NewFloatGetterFromConfig(cc)
if err != nil {
return nil, err
return nil, fmt.Errorf("currents[%d]: %w", idx, err)
}
m.currentsG = append(m.currentsG, c)
@ -69,7 +69,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error)
if cc.SoC != nil {
m.batterySoCG, err = provider.NewFloatGetterFromConfig(*cc.SoC)
if err != nil {
return nil, err
return nil, fmt.Errorf("battery: %w", err)
}
}

View file

@ -1,6 +1,8 @@
package provider
import (
"fmt"
"github.com/andig/evcc/util"
)
@ -20,10 +22,10 @@ func NewCalcFromConfig(other map[string]interface{}) (func() (float64, error), e
o := &calcProvider{}
for _, cc := range cc.Add {
for idx, cc := range cc.Add {
f, err := NewFloatGetterFromConfig(cc)
if err != nil {
return nil, err
return nil, fmt.Errorf("add[%d]: %w", idx, err)
}
o.add = append(o.add, f)
}

View file

@ -71,7 +71,7 @@ func NewHTTPProviderFromConfig(other map[string]interface{}) (*HTTP, error) {
// handle basic auth
if cc.Auth.Type != "" {
if err := NewAuth(log, cc.Auth, p.headers); err != nil {
return nil, err
return nil, fmt.Errorf("http auth: %w", err)
}
}
@ -83,7 +83,7 @@ func NewHTTPProviderFromConfig(other map[string]interface{}) (*HTTP, error) {
if cc.Jq != "" {
op, err := gojq.Parse(cc.Jq)
if err != nil {
return nil, fmt.Errorf("invalid jq query: %s", p.jq)
return nil, fmt.Errorf("invalid jq query '%s': %w", p.jq, err)
}
p.jq = op

View file

@ -58,7 +58,7 @@ func NewSocketProviderFromConfig(other map[string]interface{}) (*Socket, error)
// handle basic auth
if cc.Auth.Type != "" {
if err := NewAuth(log, cc.Auth, p.headers); err != nil {
return nil, err
return nil, fmt.Errorf("socket auth: %w", err)
}
}

View file

@ -61,7 +61,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Vehicle, error
getter, err := provider.NewFloatGetterFromConfig(cc.Charge)
if err != nil {
return nil, err
return nil, fmt.Errorf("charge: %w", err)
}
if cc.Cache > 0 {
@ -78,7 +78,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Vehicle, error
if cc.Status != nil {
v.statusG, err = provider.NewStringGetterFromConfig(*cc.Status)
if err != nil {
return nil, err
return nil, fmt.Errorf("status: %w", err)
}
status = v.status
}
@ -88,7 +88,7 @@ func NewConfigurableFromConfig(other map[string]interface{}) (api.Vehicle, error
if cc.Range != nil {
v.rangeG, err = provider.NewIntGetterFromConfig(*cc.Range)
if err != nil {
return nil, err
return nil, fmt.Errorf("range: %w", err)
}
rng = v.rng
}