summaryrefslogtreecommitdiff
path: root/funcs
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2017-07-31 22:50:41 -0400
committerDave Henderson <dhenderson@gmail.com>2017-07-31 23:10:01 -0400
commitf4a7377c5d3a22c19af32b549827f8a0509a76ab (patch)
treecb690698c633491bff4d2007bab932bd3e51862f /funcs
parent5a8845db8d22c1a74ae6f95654aedb2e5a9da83a (diff)
Moving getenv to separate package
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'funcs')
-rw-r--r--funcs/env.go34
-rw-r--r--funcs/env_test.go16
2 files changed, 50 insertions, 0 deletions
diff --git a/funcs/env.go b/funcs/env.go
new file mode 100644
index 00000000..40c10ff9
--- /dev/null
+++ b/funcs/env.go
@@ -0,0 +1,34 @@
+package funcs
+
+import (
+ "sync"
+
+ "github.com/hairyhenderson/gomplate/env"
+)
+
+var (
+ ef *EnvFuncs
+ efInit sync.Once
+)
+
+// EnvNS - the Env namespace
+func EnvNS() *EnvFuncs {
+ efInit.Do(func() { ef = &EnvFuncs{} })
+ return ef
+}
+
+// AddEnvFuncs -
+func AddEnvFuncs(f map[string]interface{}) {
+ f["env"] = EnvNS
+
+ // global aliases - for backwards compatibility
+ f["getenv"] = EnvNS().Getenv
+}
+
+// EnvFuncs -
+type EnvFuncs struct{}
+
+// Getenv -
+func (f *EnvFuncs) Getenv(key string, def ...string) string {
+ return env.Getenv(key, def...)
+}
diff --git a/funcs/env_test.go b/funcs/env_test.go
new file mode 100644
index 00000000..95db230b
--- /dev/null
+++ b/funcs/env_test.go
@@ -0,0 +1,16 @@
+package funcs
+
+import (
+ "os"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestEnvGetenv(t *testing.T) {
+ ef := &EnvFuncs{}
+ expected := os.Getenv("USER")
+ assert.Equal(t, expected, ef.Getenv("USER"))
+
+ assert.Equal(t, "foo", ef.Getenv("bogusenvvar", "foo"))
+}