summaryrefslogtreecommitdiff
path: root/pkg/server/env
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/server/env')
-rw-r--r--pkg/server/env/env.go29
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()