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  }