helper.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package env
  2. import (
  3. "os"
  4. "strconv"
  5. "github.com/bytedance/sonic"
  6. log "github.com/sirupsen/logrus"
  7. )
  8. func Bool(env string, defaultValue bool) bool {
  9. if env == "" {
  10. return defaultValue
  11. }
  12. e := os.Getenv(env)
  13. if e == "" {
  14. return defaultValue
  15. }
  16. p, err := strconv.ParseBool(e)
  17. if err != nil {
  18. log.Errorf("invalid %s: %s", env, e)
  19. return defaultValue
  20. }
  21. return p
  22. }
  23. func Int64(env string, defaultValue int64) int64 {
  24. if env == "" {
  25. return defaultValue
  26. }
  27. e := os.Getenv(env)
  28. if e == "" {
  29. return defaultValue
  30. }
  31. num, err := strconv.ParseInt(e, 10, 64)
  32. if err != nil {
  33. log.Errorf("invalid %s: %s", env, e)
  34. return defaultValue
  35. }
  36. return num
  37. }
  38. func Float64(env string, defaultValue float64) float64 {
  39. if env == "" {
  40. return defaultValue
  41. }
  42. e := os.Getenv(env)
  43. if e == "" {
  44. return defaultValue
  45. }
  46. num, err := strconv.ParseFloat(e, 64)
  47. if err != nil {
  48. log.Errorf("invalid %s: %s", env, e)
  49. return defaultValue
  50. }
  51. return num
  52. }
  53. func String(env, defaultValue string) string {
  54. if env == "" {
  55. return defaultValue
  56. }
  57. e := os.Getenv(env)
  58. if e == "" {
  59. return defaultValue
  60. }
  61. return e
  62. }
  63. func JSON[T any](env string, defaultValue T) T {
  64. if env == "" {
  65. return defaultValue
  66. }
  67. e := os.Getenv(env)
  68. if e == "" {
  69. return defaultValue
  70. }
  71. var t T
  72. if err := sonic.UnmarshalString(e, &t); err != nil {
  73. log.Errorf("invalid %s: %s", env, e)
  74. return defaultValue
  75. }
  76. return t
  77. }