console.go 4.0 KB

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