helper.go 1.5 KB

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