env.go 754 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package env
  2. import (
  3. "os"
  4. )
  5. type Env interface {
  6. Get(key string) string
  7. Env() []string
  8. }
  9. type osEnv struct{}
  10. // Get implements Env.
  11. func (o *osEnv) Get(key string) string {
  12. return os.Getenv(key)
  13. }
  14. func (o *osEnv) Env() []string {
  15. return os.Environ()
  16. }
  17. func New() Env {
  18. return &osEnv{}
  19. }
  20. type mapEnv struct {
  21. m map[string]string
  22. }
  23. // Get implements Env.
  24. func (m *mapEnv) Get(key string) string {
  25. if value, ok := m.m[key]; ok {
  26. return value
  27. }
  28. return ""
  29. }
  30. // Env implements Env.
  31. func (m *mapEnv) Env() []string {
  32. env := make([]string, 0, len(m.m))
  33. for k, v := range m.m {
  34. env = append(env, k+"="+v)
  35. }
  36. return env
  37. }
  38. func NewFromMap(m map[string]string) Env {
  39. if m == nil {
  40. m = make(map[string]string)
  41. }
  42. return &mapEnv{m: m}
  43. }