github.com/grafana/tanka@v0.26.1-0.20240506093700-c22cfc35c21a/pkg/jsonnet/implementations/goimpl/vm.go (about) 1 package goimpl 2 3 import ( 4 "github.com/google/go-jsonnet" 5 "github.com/grafana/tanka/pkg/jsonnet/native" 6 ) 7 8 // MakeRawVM returns a Jsonnet VM with some extensions of Tanka, including: 9 // - extended importer 10 // - extCode and tlaCode applied 11 // - native functions registered 12 // This is exposed because Go is used for advanced use cases, like finding transitive imports or linting. 13 func MakeRawVM(importPaths []string, extCode map[string]string, tlaCode map[string]string, maxStack int) *jsonnet.VM { 14 vm := jsonnet.MakeVM() 15 vm.Importer(newExtendedImporter(importPaths)) 16 17 for k, v := range extCode { 18 vm.ExtCode(k, v) 19 } 20 for k, v := range tlaCode { 21 vm.TLACode(k, v) 22 } 23 24 for _, nf := range native.Funcs() { 25 vm.NativeFunction(nf) 26 } 27 28 if maxStack > 0 { 29 vm.MaxStack = maxStack 30 } 31 32 return vm 33 }