Improve configuration error messages

This commit is contained in:
andig 2020-07-25 16:12:47 +02:00
parent a271b55c97
commit 38bb8cb7ab
4 changed files with 27 additions and 4 deletions

View file

@ -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),

View file

@ -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

View file

@ -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

View file

@ -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()