helpers.go 2.3 KB

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