Gracefully error on missing name attribute

This commit is contained in:
andig 2021-06-06 20:48:11 +02:00
parent be4eb6f3da
commit bb5135e84e
3 changed files with 20 additions and 5 deletions

View file

@ -11,6 +11,7 @@ import (
"github.com/andig/evcc/push"
"github.com/andig/evcc/server"
"github.com/andig/evcc/vehicle"
"github.com/dustin/go-humanize"
)
type config struct {
@ -100,7 +101,11 @@ func (cp *ConfigProvider) configure(conf config) error {
func (cp *ConfigProvider) configureMeters(conf config) error {
cp.meters = make(map[string]api.Meter)
for _, cc := range conf.Meters {
for id, cc := range conf.Meters {
if cc.Name == "" {
return fmt.Errorf("cannot create %s meter: missing name", humanize.Ordinal(id+1))
}
m, err := meter.NewFromConfig(cc.Type, cc.Other)
if err != nil {
err = fmt.Errorf("cannot create meter '%s': %w", cc.Name, err)
@ -119,7 +124,11 @@ func (cp *ConfigProvider) configureMeters(conf config) error {
func (cp *ConfigProvider) configureChargers(conf config) error {
cp.chargers = make(map[string]api.Charger)
for _, cc := range conf.Chargers {
for id, cc := range conf.Chargers {
if cc.Name == "" {
return fmt.Errorf("cannot create %s charger: missing name", humanize.Ordinal(id+1))
}
c, err := charger.NewFromConfig(cc.Type, cc.Other)
if err != nil {
err = fmt.Errorf("cannot create charger '%s': %w", cc.Name, err)
@ -138,11 +147,14 @@ func (cp *ConfigProvider) configureChargers(conf config) error {
func (cp *ConfigProvider) configureVehicles(conf config) error {
cp.vehicles = make(map[string]api.Vehicle)
for _, cc := range conf.Vehicles {
for id, cc := range conf.Vehicles {
if cc.Name == "" {
return fmt.Errorf("cannot create %s vehicle: missing name", humanize.Ordinal(id+1))
}
v, err := vehicle.NewFromConfig(cc.Type, cc.Other)
if err != nil {
err = fmt.Errorf("cannot create vehicle '%s': %w", cc.Name, err)
return err
return fmt.Errorf("cannot create vehicle '%s': %w", cc.Name, err)
}
if _, exists := cp.vehicles[cc.Name]; exists {

1
go.mod
View file

@ -14,6 +14,7 @@ require (
github.com/containrrr/shoutrrr v0.4.4
github.com/deepmap/oapi-codegen v1.6.1 // indirect
github.com/denisbrodbeck/machineid v1.0.1
github.com/dustin/go-humanize v1.0.0
github.com/dylanmei/iso8601 v0.1.0
github.com/eclipse/paho.mqtt.golang v1.3.4
github.com/fatih/structs v1.1.0

2
go.sum
View file

@ -138,6 +138,8 @@ github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbj
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dylanmei/iso8601 v0.1.0 h1:812NGQDBcqquTfH5Yeo7lwR0nzx/cKdsmf3qMjPURUI=
github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ=
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=