console.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package console
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/gookit/color"
  6. )
  7. type (
  8. // Console wraps from the fmt.Sprintf,
  9. // by default, it implemented the colorConsole to provide the colorful output to the console
  10. // and the ideaConsole to output with prefix for the plugin of intellij
  11. Console interface {
  12. Success(format string, a ...any)
  13. Info(format string, a ...any)
  14. Debug(format string, a ...any)
  15. Warning(format string, a ...any)
  16. Error(format string, a ...any)
  17. Fatalln(format string, a ...any)
  18. MarkDone()
  19. Must(err error)
  20. }
  21. colorConsole struct {
  22. enable bool
  23. }
  24. // for idea log
  25. ideaConsole struct{}
  26. )
  27. // NewConsole returns an instance of Console
  28. func NewConsole(idea bool) Console {
  29. if idea {
  30. return NewIdeaConsole()
  31. }
  32. return NewColorConsole()
  33. }
  34. // NewColorConsole returns an instance of colorConsole
  35. func NewColorConsole(enable ...bool) Console {
  36. logEnable := true
  37. for _, e := range enable {
  38. logEnable = e
  39. }
  40. return &colorConsole{
  41. enable: logEnable,
  42. }
  43. }
  44. func (c *colorConsole) Info(format string, a ...any) {
  45. if !c.enable {
  46. return
  47. }
  48. msg := fmt.Sprintf(format, a...)
  49. fmt.Println(msg)
  50. }
  51. func (c *colorConsole) Debug(format string, a ...any) {
  52. if !c.enable {
  53. return
  54. }
  55. println(color.LightCyan.Sprintf(format, a...))
  56. }
  57. func (c *colorConsole) Success(format string, a ...any) {
  58. if !c.enable {
  59. return
  60. }
  61. println(color.LightGreen.Sprintf(format, a...))
  62. }
  63. func (c *colorConsole) Warning(format string, a ...any) {
  64. if !c.enable {
  65. return
  66. }
  67. println(color.LightYellow.Sprintf(format, a...))
  68. }
  69. func (c *colorConsole) Error(format string, a ...any) {
  70. if !c.enable {
  71. return
  72. }
  73. println(color.LightRed.Sprintf(format, a...))
  74. }
  75. func (c *colorConsole) Fatalln(format string, a ...any) {
  76. if !c.enable {
  77. return
  78. }
  79. c.Error(format, a...)
  80. os.Exit(1)
  81. }
  82. func (c *colorConsole) MarkDone() {
  83. if !c.enable {
  84. return
  85. }
  86. c.Success("Done.")
  87. }
  88. func (c *colorConsole) Must(err error) {
  89. if !c.enable {
  90. return
  91. }
  92. if err != nil {
  93. c.Fatalln("%+v", err)
  94. }
  95. }
  96. // NewIdeaConsole returns an instance of ideaConsole
  97. func NewIdeaConsole() Console {
  98. return &ideaConsole{}
  99. }
  100. func (i *ideaConsole) Info(format string, a ...any) {
  101. msg := fmt.Sprintf(format, a...)
  102. fmt.Println(msg)
  103. }
  104. func (i *ideaConsole) Debug(format string, a ...any) {
  105. fmt.Println(color.LightCyan.Sprintf(format, a...))
  106. }
  107. func (i *ideaConsole) Success(format string, a ...any) {
  108. msg := fmt.Sprintf(format, a...)
  109. fmt.Println("[SUCCESS]: ", msg)
  110. }
  111. func (i *ideaConsole) Warning(format string, a ...any) {
  112. msg := fmt.Sprintf(format, a...)
  113. fmt.Println("[WARNING]: ", msg)
  114. }
  115. func (i *ideaConsole) Error(format string, a ...any) {
  116. msg := fmt.Sprintf(format, a...)
  117. fmt.Println("[ERROR]: ", msg)
  118. }
  119. func (i *ideaConsole) Fatalln(format string, a ...any) {
  120. i.Error(format, a...)
  121. os.Exit(1)
  122. }
  123. func (i *ideaConsole) MarkDone() {
  124. i.Success("Done.")
  125. }
  126. func (i *ideaConsole) Must(err error) {
  127. if err != nil {
  128. i.Fatalln("%+v", err)
  129. }
  130. }
  131. func println(msg any) {
  132. fmt.Println(msg)
  133. }
  134. var defaultConsole = &colorConsole{enable: true}
  135. func Success(format string, a ...any) {
  136. defaultConsole.Success(format, a...)
  137. }
  138. func Info(format string, a ...any) {
  139. defaultConsole.Info(format, a...)
  140. }
  141. func Debug(format string, a ...any) {
  142. defaultConsole.Debug(format, a...)
  143. }
  144. func Warning(format string, a ...any) {
  145. defaultConsole.Warning(format, a...)
  146. }
  147. func Error(format string, a ...any) {
  148. defaultConsole.Error(format, a...)
  149. }
  150. func Fatalln(format string, a ...any) {
  151. defaultConsole.Fatalln(format, a...)
  152. }
  153. func MarkDone() {
  154. defaultConsole.MarkDone()
  155. }
  156. func Must(err error) {
  157. defaultConsole.Must(err)
  158. }