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