summaryrefslogtreecommitdiff
path: root/vendor/github.com/xlgmokha/x/pkg/env/with.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/xlgmokha/x/pkg/env/with.go')
-rw-r--r--vendor/github.com/xlgmokha/x/pkg/env/with.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/vendor/github.com/xlgmokha/x/pkg/env/with.go b/vendor/github.com/xlgmokha/x/pkg/env/with.go
new file mode 100644
index 00000000..6efeed46
--- /dev/null
+++ b/vendor/github.com/xlgmokha/x/pkg/env/with.go
@@ -0,0 +1,27 @@
+package env
+
+import (
+ "os"
+)
+
+func With(env Vars, callback func()) {
+ original := Vars{}
+
+ for key, value := range env {
+ if val, ok := os.LookupEnv(key); ok {
+ original[key] = val
+ }
+ os.Setenv(key, value)
+ }
+
+ defer func() {
+ for key, _ := range env {
+ os.Unsetenv(key)
+ }
+ for key, value := range original {
+ os.Setenv(key, value)
+ }
+ }()
+
+ callback()
+}