lifecycle/env/vars.go

60 lines
994 B
Go

package env
import (
"strings"
)
type Vars struct {
vals map[string]string
ignoreCase bool
}
func varsFromEnv(env []string, ignoreCase bool, removeKey func(string) bool) *Vars {
vars := NewVars(nil, ignoreCase)
for _, kv := range env {
parts := strings.SplitN(kv, "=", 2)
if len(parts) != 2 {
continue
}
if removeKey(parts[0]) {
continue
}
vars.Set(parts[0], parts[1])
}
return vars
}
func NewVars(vars map[string]string, ignoreCase bool) *Vars {
s := &Vars{
vals: map[string]string{},
ignoreCase: ignoreCase,
}
for k, v := range vars {
s.Set(k, v)
}
return s
}
func (s *Vars) Get(key string) string {
return s.vals[s.key(key)]
}
func (s *Vars) Set(key, value string) {
s.vals[s.key(key)] = value
}
func (s *Vars) key(k string) string {
if s.ignoreCase {
return strings.ToUpper(k)
}
return k
}
func (s *Vars) List() []string {
var result []string
for k, v := range s.vals {
result = append(result, k+"="+v)
}
return result
}