github.com/everdrone/grab@v0.1.7-0.20230416223925-40674b995521/internal/context/default.go (about) 1 package context 2 3 import ( 4 "os" 5 "runtime" 6 "strings" 7 8 "github.com/hashicorp/hcl/v2" 9 "github.com/zclconf/go-cty/cty" 10 "github.com/zclconf/go-cty/cty/function" 11 ) 12 13 func GetEnvironmentMap() map[string]cty.Value { 14 result := make(map[string]cty.Value) 15 16 for _, v := range os.Environ() { 17 parts := strings.SplitN(v, "=", 2) 18 result[parts[0]] = cty.StringVal(parts[1]) 19 } 20 21 return result 22 } 23 24 func BuildInitialContext() *hcl.EvalContext { 25 result := &hcl.EvalContext{ 26 Variables: map[string]cty.Value{}, 27 Functions: map[string]function.Function{}, 28 } 29 30 result.Variables["env"] = cty.ObjectVal(GetEnvironmentMap()) 31 32 result.Variables["os"] = cty.ObjectVal(map[string]cty.Value{ 33 "name": cty.StringVal(runtime.GOOS), 34 "arch": cty.StringVal(runtime.GOARCH), 35 }) 36 37 result.Variables["body"] = cty.StringVal("body") 38 result.Variables["url"] = cty.StringVal("url") 39 40 return result 41 }