diff options
Diffstat (limited to 'pkg/server/env')
| -rw-r--r-- | pkg/server/env/env.go | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/pkg/server/env/env.go b/pkg/server/env/env.go index 98ee231..b75d9a8 100644 --- a/pkg/server/env/env.go +++ b/pkg/server/env/env.go @@ -73,7 +73,7 @@ func (e Env) Has(key string) bool { return ok } -func (e Env) Set(key string, value string) error { +func validKeyValue(key string, value string) error { if !isGoodName(key) { return errBadVariable } @@ -82,6 +82,14 @@ func (e Env) Set(key string, value string) error { return errEmptyVariable } + return nil +} + +func (e Env) Set(key string, value string) error { + if err := validKeyValue(key, value); err != nil { + return err + } + e.Lock() defer e.Unlock() @@ -92,6 +100,25 @@ func (e Env) Set(key string, value string) error { return nil } +func (e Env) Push(key string, value string) error { + if err := validKeyValue(key, value); err != nil { + return err + } + + e.Lock() + defer e.Unlock() + + e.init() + + if old, ok := e.m[key]; ok { + e.m[key] = old + "," + value + } else { + e.m[key] = value + } + + return nil +} + func (e *env) Del(key string) bool { e.Lock() defer e.Unlock() |
