src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/eval/builtin_fn_env.go (about)

     1  package eval
     2  
     3  import (
     4  	"errors"
     5  	"os"
     6  )
     7  
     8  // ErrNonExistentEnvVar is raised by the get-env command when the environment
     9  // variable does not exist.
    10  var ErrNonExistentEnvVar = errors.New("non-existent environment variable")
    11  
    12  func init() {
    13  	addBuiltinFns(map[string]any{
    14  		"has-env":   hasEnv,
    15  		"get-env":   getEnv,
    16  		"set-env":   os.Setenv,
    17  		"unset-env": os.Unsetenv,
    18  	})
    19  }
    20  
    21  func hasEnv(key string) bool {
    22  	_, ok := os.LookupEnv(key)
    23  	return ok
    24  }
    25  
    26  func getEnv(key string) (string, error) {
    27  	value, ok := os.LookupEnv(key)
    28  	if !ok {
    29  		return "", ErrNonExistentEnvVar
    30  	}
    31  	return value, nil
    32  }