env.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Unless explicitly stated otherwise all files in this repository are licensed
  2. // under the Apache License Version 2.0.
  3. // This product includes software developed at Datadog (https://www.datadoghq.com/).
  4. // Copyright 2016 Datadog, Inc.
  5. package internal
  6. import (
  7. "os"
  8. "strconv"
  9. "time"
  10. "gopkg.in/DataDog/dd-trace-go.v1/internal/log"
  11. )
  12. // BoolEnv returns the parsed boolean value of an environment variable, or
  13. // def otherwise.
  14. func BoolEnv(key string, def bool) bool {
  15. vv, ok := os.LookupEnv(key)
  16. if !ok {
  17. return def
  18. }
  19. v, err := strconv.ParseBool(vv)
  20. if err != nil {
  21. log.Warn("Non-boolean value for env var %s, defaulting to %t. Parse failed with error: %v", key, def, err)
  22. return def
  23. }
  24. return v
  25. }
  26. // IntEnv returns the parsed int value of an environment variable, or
  27. // def otherwise.
  28. func IntEnv(key string, def int) int {
  29. vv, ok := os.LookupEnv(key)
  30. if !ok {
  31. return def
  32. }
  33. v, err := strconv.Atoi(vv)
  34. if err != nil {
  35. log.Warn("Non-integer value for env var %s, defaulting to %d. Parse failed with error: %v", key, def, err)
  36. return def
  37. }
  38. return v
  39. }
  40. // DurationEnv returns the parsed duration value of an environment variable, or
  41. // def otherwise.
  42. func DurationEnv(key string, def time.Duration) time.Duration {
  43. vv, ok := os.LookupEnv(key)
  44. if !ok {
  45. return def
  46. }
  47. v, err := time.ParseDuration(vv)
  48. if err != nil {
  49. log.Warn("Non-duration value for env var %s, defaulting to %d. Parse failed with error: %v", key, def, err)
  50. return def
  51. }
  52. return v
  53. }