chore: simplify setup code

This commit is contained in:
andig 2023-04-10 11:10:55 +02:00
parent c2bddcfcf5
commit 6e88e62685

View file

@ -3,7 +3,6 @@ package cmd
import (
"errors"
"fmt"
"github.com/evcc-io/evcc/provider/golang"
"strconv"
"strings"
"time"
@ -15,6 +14,7 @@ import (
"github.com/evcc-io/evcc/core"
"github.com/evcc-io/evcc/core/site"
"github.com/evcc-io/evcc/hems"
"github.com/evcc-io/evcc/provider/golang"
"github.com/evcc-io/evcc/provider/javascript"
"github.com/evcc-io/evcc/provider/mqtt"
"github.com/evcc-io/evcc/push"
@ -112,17 +112,21 @@ func configureEnvironment(cmd *cobra.Command, conf config) (err error) {
// configureDatabase configures session database
func configureDatabase(conf dbConfig) error {
err := db.NewInstance(conf.Type, conf.Dsn)
if err == nil {
if err = settings.Init(); err == nil {
shutdown.Register(func() {
if err := settings.Persist(); err != nil {
log.ERROR.Println("cannot save settings:", err)
}
})
}
if err := db.NewInstance(conf.Type, conf.Dsn); err != nil {
return err
}
return err
if err := settings.Init(); err != nil {
return err
}
shutdown.Register(func() {
if err := settings.Persist(); err != nil {
log.ERROR.Println("cannot save settings:", err)
}
})
return nil
}
// configureInflux configures influx database
@ -148,11 +152,10 @@ func configureMQTT(conf mqttConfig) error {
log := util.NewLogger("mqtt")
var err error
mqtt.Instance, err = mqtt.RegisteredClient(log, conf.Broker, conf.User, conf.Password, conf.ClientID, 1, conf.Insecure, func(options *paho.ClientOptions) {
if mqtt.Instance, err = mqtt.RegisteredClient(log, conf.Broker, conf.User, conf.Password, conf.ClientID, 1, conf.Insecure, func(options *paho.ClientOptions) {
topic := fmt.Sprintf("%s/status", strings.Trim(conf.Topic, "/"))
options.SetWill(topic, "offline", 1, true)
})
if err != nil {
}); err != nil {
return fmt.Errorf("failed configuring mqtt: %w", err)
}
@ -278,31 +281,31 @@ func configureTariffs(conf tariffConfig) (tariff.Tariffs, error) {
return *tariffs, nil
}
func configureSiteAndLoadpoints(conf config) (site *core.Site, err error) {
if err = cp.configure(conf); err == nil {
var loadpoints []*core.Loadpoint
loadpoints, err = configureLoadpoints(conf, cp)
var tariffs tariff.Tariffs
if err == nil {
tariffs, err = configureTariffs(conf.Tariffs)
}
if err == nil {
// list of vehicles ordered by name
keys := maps.Keys(cp.vehicles)
slices.Sort(keys)
vehicles := make([]api.Vehicle, 0, len(cp.vehicles))
for _, k := range keys {
vehicles = append(vehicles, cp.vehicles[k])
}
site, err = configureSite(conf.Site, cp, loadpoints, vehicles, tariffs)
}
func configureSiteAndLoadpoints(conf config) (*core.Site, error) {
if err := cp.configure(conf); err != nil {
return nil, err
}
return site, err
loadpoints, err := configureLoadpoints(conf, cp)
if err != nil {
return nil, fmt.Errorf("failed configuring loadpoints: %w", err)
}
tariffs, err := configureTariffs(conf.Tariffs)
if err != nil {
return nil, err
}
// list of vehicles ordered by name
keys := maps.Keys(cp.vehicles)
slices.Sort(keys)
vehicles := make([]api.Vehicle, 0, len(cp.vehicles))
for _, k := range keys {
vehicles = append(vehicles, cp.vehicles[k])
}
return configureSite(conf.Site, cp, loadpoints, vehicles, tariffs)
}
func configureSite(conf map[string]interface{}, cp *ConfigProvider, loadpoints []*core.Loadpoint, vehicles []api.Vehicle, tariffs tariff.Tariffs) (*core.Site, error) {