github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/rego/runtime.go (about)

     1  package rego
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/open-policy-agent/opa/ast"
     8  	"github.com/open-policy-agent/opa/version"
     9  )
    10  
    11  func addRuntimeValues() *ast.Term {
    12  	env := ast.NewObject()
    13  	for _, pair := range os.Environ() {
    14  		parts := strings.SplitN(pair, "=", 2)
    15  		if len(parts) == 1 {
    16  			env.Insert(ast.StringTerm(parts[0]), ast.NullTerm())
    17  		} else if len(parts) > 1 {
    18  			env.Insert(ast.StringTerm(parts[0]), ast.StringTerm(parts[1]))
    19  		}
    20  	}
    21  
    22  	obj := ast.NewObject()
    23  	obj.Insert(ast.StringTerm("env"), ast.NewTerm(env))
    24  	obj.Insert(ast.StringTerm("version"), ast.StringTerm(version.Version))
    25  	obj.Insert(ast.StringTerm("commit"), ast.StringTerm(version.Vcs))
    26  
    27  	return ast.NewTerm(obj)
    28  }