Skip to content

Commit bac0f66

Browse files
committed
starlark/types: evaluate include main thread predeclared variables
1 parent 1643ed1 commit bac0f66

File tree

4 files changed

+25
-22
lines changed

4 files changed

+25
-22
lines changed

starlark/runtime/runtime.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,16 @@ type Runtime struct {
5151
// NewRuntime returns a new Runtime for the given terraform.PluginManager.
5252
func NewRuntime(pm *terraform.PluginManager) *Runtime {
5353
tf := types.NewTerraform(pm)
54+
predeclared := starlark.StringDict{}
55+
predeclared["tf"] = tf
56+
predeclared["provisioner"] = types.BuiltinProvisioner()
57+
predeclared["backend"] = types.BuiltinBackend()
58+
predeclared["validate"] = types.BuiltinValidate()
59+
predeclared["hcl"] = types.BuiltinHCL()
60+
predeclared["fn"] = types.BuiltinFunctionAttribute()
61+
predeclared["evaluate"] = types.BuiltinEvaluate(predeclared)
62+
predeclared["struct"] = starlark.NewBuiltin("struct", starlarkstruct.Make)
63+
predeclared["module"] = starlark.NewBuiltin("module", starlarkstruct.MakeModule)
5464

5565
return &Runtime{
5666
Terraform: tf,
@@ -70,16 +80,7 @@ func NewRuntime(pm *terraform.PluginManager) *Runtime {
7080
"time": time.LoadModule,
7181
"http": http.LoadModule,
7282
},
73-
predeclared: starlark.StringDict{
74-
"tf": tf,
75-
"provisioner": types.BuiltinProvisioner(),
76-
"backend": types.BuiltinBackend(),
77-
"hcl": types.BuiltinHCL(),
78-
"fn": types.BuiltinFunctionAttribute(),
79-
"evaluate": types.BuiltinEvaluate(),
80-
"struct": starlark.NewBuiltin("struct", starlarkstruct.Make),
81-
"module": starlark.NewBuiltin("module", starlarkstruct.MakeModule),
82-
},
83+
predeclared: predeclared,
8384
}
8485
}
8586

starlark/types/evaluate.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@ import (
2525
// Defines the predeclared context for the execution. Execution does
2626
// not modify this dictionary
2727
//
28-
func BuiltinEvaluate() starlark.Value {
28+
func BuiltinEvaluate(predeclared starlark.StringDict) starlark.Value {
2929
return starlark.NewBuiltin("evaluate", func(t *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
3030
var raw starlark.String
31-
predeclared := starlark.StringDict{}
3231

3332
switch len(args) {
3433
case 2:

starlark/types/provider_test.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/mcuadros/ascode/terraform"
1414
"go.starlark.net/resolve"
1515
"go.starlark.net/starlark"
16+
"go.starlark.net/starlarkstruct"
1617
)
1718

1819
var id int
@@ -75,15 +76,16 @@ func doTestPrint(t *testing.T, filename string, print func(*starlark.Thread, str
7576

7677
test.SetReporter(thread, t)
7778

78-
predeclared := starlark.StringDict{
79-
"provisioner": BuiltinProvisioner(),
80-
"backend": BuiltinBackend(),
81-
"hcl": BuiltinHCL(),
82-
"fn": BuiltinFunctionAttribute(),
83-
"evaluate": BuiltinEvaluate(),
84-
"validate": BuiltinValidate(),
85-
"tf": NewTerraform(pm),
86-
}
79+
predeclared := starlark.StringDict{}
80+
predeclared["tf"] = NewTerraform(pm)
81+
predeclared["provisioner"] = BuiltinProvisioner()
82+
predeclared["backend"] = BuiltinBackend()
83+
predeclared["hcl"] = BuiltinHCL()
84+
predeclared["validate"] = BuiltinValidate()
85+
predeclared["fn"] = BuiltinFunctionAttribute()
86+
predeclared["evaluate"] = BuiltinEvaluate(predeclared)
87+
predeclared["struct"] = starlark.NewBuiltin("struct", starlarkstruct.Make)
88+
predeclared["module"] = starlark.NewBuiltin("module", starlarkstruct.MakeModule)
8789

8890
_, err := starlark.ExecFile(thread, filename, nil, predeclared)
8991
if err != nil {
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
foo = bar
1+
foo = bar
2+
tf

0 commit comments

Comments
 (0)