helpers.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // package helpers -- содержит всякие полезняшки
  2. //
  3. // Пакет импортировать где нужно в нотации `. "gitlab.c2g.pw/back/uaj-abstract-client/pkg/helpers"`
  4. package helpers
  5. import (
  6. "fmt"
  7. "log"
  8. "os"
  9. "time"
  10. . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
  11. )
  12. var (
  13. IsStageLocal bool
  14. IsStageProd bool
  15. )
  16. // FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert)
  17. //
  18. // (isCond bool, msgFormat string, args ...any)
  19. type FnAssert func(isCond bool, msgFormat string, args ...any)
  20. // Assert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert)
  21. func Assert(isCond bool, msgFormat string, args ...any) {
  22. if isCond {
  23. return
  24. }
  25. msg := fmt.Sprintf("SOFT ASSERT "+msgFormat+"\n", args...)
  26. if IsStageLocal {
  27. panic(msg)
  28. }
  29. log.Print(msg)
  30. }
  31. // FnHassert -- проверяет с жёстким падением условие
  32. //
  33. // (isCond bool, msgFormat string, args ...any)
  34. type FnHassert func(isCond bool, msgFormat string, args ...any)
  35. // Hassert -- проверка на правильность утверждения с безусловным падением в панику (hard assert)
  36. func Hassert(isCond bool, msgFormat string, args ...any) {
  37. if isCond {
  38. return
  39. }
  40. msg := fmt.Sprintf("HARD ASSERT "+msgFormat+"\n", args...)
  41. panic(msg)
  42. }
  43. // TimeNowStr -- возвращает стандартную строку локального сейчас-времени "2006-01-02 15:04:05.000 -07 MST"
  44. func TimeNowStr() ATime {
  45. strTime := time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST")
  46. return ATime(strTime)
  47. }
  48. // TimeNow -- возвращает локальное Unix сейчас-время (мсек, не зависит от положения)
  49. func TimeNow() int64 {
  50. timeNow := time.Now().Local().UnixMilli()
  51. return timeNow
  52. }
  53. // SleepMs -- спит миллисекунду (иногда бывает полезно)
  54. func SleepMs() {
  55. time.Sleep(time.Millisecond * 1)
  56. }
  57. func init_() {
  58. strStage := os.Getenv("STAGE")
  59. switch strStage {
  60. case "local":
  61. IsStageLocal = true
  62. IsStageProd = false
  63. case "prod":
  64. IsStageProd = true
  65. IsStageLocal = false
  66. case "":
  67. IsStageLocal = true
  68. IsStageProd = false
  69. default:
  70. panic(fmt.Sprintf("lepers.init_(): unknown env STAGE (%v)\n", strStage))
  71. }
  72. }
  73. func init() {
  74. init_()
  75. }