From 6e88e62685f87b6c6cdcb91bdc915e63bbc09a11 Mon Sep 17 00:00:00 2001 From: andig Date: Mon, 10 Apr 2023 11:10:55 +0200 Subject: [PATCH] chore: simplify setup code --- cmd/setup.go | 77 +++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/cmd/setup.go b/cmd/setup.go index 4ed560e1c..10ddd0516 100644 --- a/cmd/setup.go +++ b/cmd/setup.go @@ -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) {