src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/eval/vars/env.go (about) 1 package vars 2 3 import ( 4 "errors" 5 "os" 6 ) 7 8 var errEnvMustBeString = errors.New("environment variable can only be set string values") 9 10 type envVariable struct { 11 name string 12 } 13 14 func (ev envVariable) Set(val any) error { 15 if s, ok := val.(string); ok { 16 os.Setenv(ev.name, s) 17 return nil 18 } 19 return errEnvMustBeString 20 } 21 22 func (ev envVariable) Get() any { 23 return os.Getenv(ev.name) 24 } 25 26 func (ev envVariable) Unset() error { 27 return os.Unsetenv(ev.name) 28 } 29 30 func (ev envVariable) IsSet() bool { 31 _, ok := os.LookupEnv(ev.name) 32 return ok 33 } 34 35 // FromEnv returns a Var corresponding to the named environment variable. 36 func FromEnv(name string) UnsettableVar { 37 return envVariable{name} 38 }