main
 1package env
 2
 3import (
 4	"os"
 5)
 6
 7func With(env Vars, callback func()) {
 8	original := Vars{}
 9
10	for key, value := range env {
11		if val, ok := os.LookupEnv(key); ok {
12			original[key] = val
13		}
14		os.Setenv(key, value)
15	}
16
17	defer func() {
18		for key, _ := range env {
19			os.Unsetenv(key)
20		}
21		for key, value := range original {
22			os.Setenv(key, value)
23		}
24	}()
25
26	callback()
27}