Go plugin: add global imports (BC) (#17630)

This commit is contained in:
andig 2024-12-07 14:21:19 +01:00 • committed by GitHub
parent b4636ff046
commit b881bfcf5a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 14 additions and 7 deletions

View file

@ -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

View file

@ -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
}