summaryrefslogtreecommitdiff
path: root/pkg/server/env
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2020-02-23 16:01:23 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2020-02-23 16:01:23 +0300
commit4bbdb1b34d9f7e71c0faf6f1943e6bb4ce303af1 (patch)
tree99cd0a2becd48025a225399ad167a963f9f5ec90 /pkg/server/env
parentde868930e2301b68a50bde088dd83dc575b72c54 (diff)
make auth (chap)
Diffstat (limited to 'pkg/server/env')
-rw-r--r--pkg/server/env/env.go26
1 files changed, 22 insertions, 4 deletions
diff --git a/pkg/server/env/env.go b/pkg/server/env/env.go
index ab47ae8..affb4ef 100644
--- a/pkg/server/env/env.go
+++ b/pkg/server/env/env.go
@@ -15,7 +15,7 @@ type Env struct {
*env
}
-const namePattern = "[a-zA-Z][a-zA-Z0-9]*"
+const namePattern = "[a-zA-Z][a-zA-Z0-9.]*"
var isNamePattern = regexp.MustCompile("^" + namePattern + "$").MatchString
var namePatternRe = regexp.MustCompile("@" + namePattern)
@@ -25,6 +25,26 @@ func New() Env {
return Env{new(env)}
}
+func (e *env) init() {
+ if e.m == nil {
+ e.m = make(map[string]string)
+ }
+}
+
+func (e *env) Copy() Env {
+ c := New()
+
+ if len(e.m) > 0 {
+ c.init()
+
+ for k, v := range e.m {
+ c.m[k] = v
+ }
+ }
+
+ return c
+}
+
func (e *env) Find(key string) (string, bool) {
e.Lock()
defer e.Unlock()
@@ -47,9 +67,7 @@ func (e *env) Set(key string, value string) error {
e.Lock()
defer e.Unlock()
- if e.m == nil {
- e.m = make(map[string]string)
- }
+ e.init()
e.m[key] = value