diff --git a/provider/golang/registry.go b/provider/golang/registry.go index 4c83749f1..21d024f61 100644 --- a/provider/golang/registry.go +++ b/provider/golang/registry.go @@ -8,6 +8,13 @@ import ( "github.com/traefik/yaegi/interp" ) +const Imports = `import ( + "fmt" + "math" + "strings" + "time" +)` + var ( mu sync.Mutex registry = make(map[string]*interp.Interpreter) @@ -29,6 +36,10 @@ func RegisteredVM(name, init string) (*interp.Interpreter, error) { return nil, err } + if _, err := vm.Eval(Imports); err != nil { + return nil, err + } + if init != "" { if _, err := vm.Eval(init); err != nil { return nil, err diff --git a/tariff/embed.go b/tariff/embed.go index bb312de0f..c9c523a39 100644 --- a/tariff/embed.go +++ b/tariff/embed.go @@ -5,6 +5,7 @@ import ( "fmt" "time" + "github.com/evcc-io/evcc/provider/golang" "github.com/evcc-io/evcc/provider/golang/stdlib" "github.com/traefik/yaegi/interp" ) @@ -33,18 +34,13 @@ func (t *embed) init() (err error) { return err } - if _, err := vm.Eval(fmt.Sprintf(` - import ( - "math" - "time" - ) - + if _, err := vm.Eval(fmt.Sprintf(`%s var ( price float64 charges float64 = %f tax float64 = %f ts time.Time - )`, t.Charges, t.Tax)); err != nil { + )`, golang.Imports, t.Charges, t.Tax)); err != nil { return err }