helpers.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. )
  11. var (
  12. IsStageLocal bool
  13. IsStageProd bool
  14. )
  15. // FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert).
  16. //
  17. // (isCond bool, msgFormat string, args ...any)
  18. type FnAssert func(isCond bool, msgFormat string, args ...any)
  19. // Assert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert).
  20. func Assert(isCond bool, msgFormat string, args ...any) {
  21. if isCond {
  22. return
  23. }
  24. msg := fmt.Sprintf("SOFT ASSERT "+msgFormat+"\n", args...)
  25. if IsStageLocal {
  26. panic(msg)
  27. }
  28. log.Print(msg)
  29. }
  30. // FnHassert -- проверяет с жёстким падением условие.
  31. //
  32. // (isCond bool, msgFormat string, args ...any)
  33. type FnHassert func(isCond bool, msgFormat string, args ...any)
  34. // Hassert -- проверка на правильность утверждения с безусловным падением в панику (hard assert).
  35. func Hassert(isCond bool, msgFormat string, args ...any) {
  36. if isCond {
  37. return
  38. }
  39. msg := fmt.Sprintf("HARD ASSERT "+msgFormat+"\n", args...)
  40. panic(msg)
  41. }
  42. // TimeNow -- возвращает локальное Unix сейчас-время (мсек, не зависит от положения).
  43. func TimeNow() int64 {
  44. timeNow := time.Now().Local().UnixMilli()
  45. return timeNow
  46. }
  47. // SleepMs -- спит миллисекунду (иногда бывает полезно).
  48. func SleepMs() {
  49. time.Sleep(time.Millisecond * 1)
  50. }
  51. func init_() {
  52. strStage := os.Getenv("STAGE")
  53. switch strStage {
  54. case "local":
  55. IsStageLocal = true
  56. IsStageProd = false
  57. case "prod":
  58. IsStageProd = true
  59. IsStageLocal = false
  60. case "":
  61. IsStageLocal = true
  62. IsStageProd = false
  63. default:
  64. panic(fmt.Sprintf("lepers.init_(): unknown env STAGE (%v)\n", strStage))
  65. }
  66. }
  67. func init() {
  68. init_()
  69. }