From 8a5100726507fd077620b7d586e713160af41897 Mon Sep 17 00:00:00 2001 From: andig Date: Fri, 31 May 2024 13:17:09 +0200 Subject: [PATCH] Ford: fix generating token for templates --- cmd/token.go | 13 +++++++++---- cmd/token_ford-connect.go | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cmd/token.go b/cmd/token.go index 37b6f0b0c..178dfb831 100644 --- a/cmd/token.go +++ b/cmd/token.go @@ -6,6 +6,7 @@ import ( "strings" "github.com/evcc-io/evcc/util/config" + "github.com/evcc-io/evcc/util/templates" "github.com/samber/lo" "github.com/spf13/cobra" "golang.org/x/oauth2" @@ -51,12 +52,16 @@ func runToken(cmd *cobra.Command, args []string) { var token *oauth2.Token var err error - typ := strings.ToLower(vehicleConf.Type) - if typ == "template" { - typ = strings.ToLower(vehicleConf.Other["template"].(string)) + if strings.ToLower(vehicleConf.Type) == "template" { + instance, err := templates.RenderInstance(templates.Vehicle, vehicleConf.Other) + if err != nil { + log.FATAL.Fatalf("rendering template failed: %v", err) + } + vehicleConf.Type = instance.Type + vehicleConf.Other = instance.Other } - switch typ { + switch typ := strings.ToLower(vehicleConf.Type); typ { case "mercedes": token, err = mercedesToken() case "ford", "ford-connect": diff --git a/cmd/token_ford-connect.go b/cmd/token_ford-connect.go index 9c113f685..095ca1444 100644 --- a/cmd/token_ford-connect.go +++ b/cmd/token_ford-connect.go @@ -16,6 +16,7 @@ func fordConnectToken(conf config.Named) (*oauth2.Token, error) { var cc struct { Credentials vehicle.ClientCredentials Tokens vehicle.Tokens + Other map[string]interface{} `mapstructure:",remain"` } if err := util.DecodeOther(conf.Other, &cc); err != nil {