environment.go 536 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package environment
  2. import (
  3. "os"
  4. "strings"
  5. )
  6. const (
  7. PROD Env = "production"
  8. DEV Env = "development"
  9. )
  10. type Env string
  11. func (e Env) String() string {
  12. return string(e)
  13. }
  14. func ReadEnv(key string, def Env) Env {
  15. v := Getenv(key, def.String())
  16. if v == "" {
  17. return def
  18. }
  19. env := Env(strings.ToLower(v))
  20. switch env {
  21. case PROD, DEV: // allowed.
  22. default:
  23. panic("unexpected environment " + v)
  24. }
  25. return env
  26. }
  27. func Getenv(key string, def string) string {
  28. if v := os.Getenv(key); v != "" {
  29. return v
  30. }
  31. return def
  32. }