From 38bb8cb7abe765bc9cb3c39e1889c3dd87eabe45 Mon Sep 17 00:00:00 2001 From: andig Date: Sat, 25 Jul 2020 16:12:47 +0200 Subject: [PATCH] Improve configuration error messages --- charger/charger.go | 11 +++++++++++ meter/meter.go | 6 ++++++ provider/config.go | 8 ++++---- vehicle/vehicle.go | 6 ++++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/charger/charger.go b/charger/charger.go index 8acbb9435..b969fbfa9 100644 --- a/charger/charger.go +++ b/charger/charger.go @@ -19,6 +19,17 @@ func NewConfigurableFromConfig(log *util.Logger, other map[string]interface{}) a cc := struct{ Status, Enable, Enabled, MaxCurrent provider.Config }{} util.DecodeOther(log, other, &cc) + for k, v := range map[string]string{ + "status": cc.Status.Type, + "enable": cc.Enable.Type, + "enabled": cc.Enabled.Type, + "maxcurrent": cc.MaxCurrent.Type, + } { + if v == "" { + log.FATAL.Fatalf("default charger config: %s required", k) + } + } + charger := NewConfigurable( provider.NewStringGetterFromConfig(log, cc.Status), provider.NewBoolGetterFromConfig(log, cc.Enabled), diff --git a/meter/meter.go b/meter/meter.go index 231ea7c79..182d4ad61 100644 --- a/meter/meter.go +++ b/meter/meter.go @@ -20,6 +20,12 @@ func NewConfigurableFromConfig(log *util.Logger, other map[string]interface{}) a }{} util.DecodeOther(log, other, &cc) + for k, v := range map[string]string{"power": cc.Power.Type} { + if v == "" { + log.FATAL.Fatalf("default meter config: %s required", k) + } + } + m := NewConfigurable(provider.NewFloatGetterFromConfig(log, cc.Power)) // decorate Meter with MeterEnergy diff --git a/provider/config.go b/provider/config.go index 37c4859a6..2dfa40e9d 100644 --- a/provider/config.go +++ b/provider/config.go @@ -81,7 +81,7 @@ func NewFloatGetterFromConfig(log *util.Logger, config Config) (res func() (floa case "modbus": res = NewModbusFromConfig(log, config.Other).FloatGetter default: - log.FATAL.Fatalf("invalid provider type %s", config.Type) + log.FATAL.Fatal("invalid plugin type:", config.Type) } return @@ -106,7 +106,7 @@ func NewIntGetterFromConfig(log *util.Logger, config Config) (res func() (int64, case "modbus": res = NewModbusFromConfig(log, config.Other).IntGetter default: - log.FATAL.Fatalf("invalid provider type %s", config.Type) + log.FATAL.Fatal("invalid plugin type:", config.Type) } return @@ -131,7 +131,7 @@ func NewStringGetterFromConfig(log *util.Logger, config Config) (res func() (str case "combined", "openwb": res = openWBStatusFromConfig(log, config.Other) default: - log.FATAL.Fatalf("invalid provider type %s", config.Type) + log.FATAL.Fatal("invalid plugin type:", config.Type) } return @@ -154,7 +154,7 @@ func NewBoolGetterFromConfig(log *util.Logger, config Config) (res func() (bool, res = NewCached(log, res, pc.Cache).BoolGetter() } default: - log.FATAL.Fatalf("invalid provider type %s", config.Type) + log.FATAL.Fatal("invalid plugin type:", config.Type) } return diff --git a/vehicle/vehicle.go b/vehicle/vehicle.go index 3bc19b739..84b265563 100644 --- a/vehicle/vehicle.go +++ b/vehicle/vehicle.go @@ -39,6 +39,12 @@ func NewConfigurableFromConfig(log *util.Logger, other map[string]interface{}) a }{} util.DecodeOther(log, other, &cc) + for k, v := range map[string]string{"charge": cc.Charge.Type} { + if v == "" { + log.FATAL.Fatalf("default vehicle config: %s required", k) + } + } + getter := provider.NewFloatGetterFromConfig(log, cc.Charge) if cc.Cache > 0 { getter = provider.NewCached(log, getter, cc.Cache).FloatGetter()