chore: simplify setup code
This commit is contained in:
parent
c2bddcfcf5
commit
6e88e62685
1 changed files with 40 additions and 37 deletions
77
cmd/setup.go
77
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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue