|
|
|
package console
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
|
|
|
|
"github.com/gookit/color"
|
|
|
|
)
|
|
|
|
|
|
|
|
type (
|
|
|
|
// Console wraps from the fmt.Sprintf,
|
|
|
|
// by default, it implemented the colorConsole to provide the colorful output to the console
|
|
|
|
// and the ideaConsole to output with prefix for the plugin of intellij
|
|
|
|
Console interface {
|
|
|
|
Success(format string, a ...any)
|
|
|
|
Info(format string, a ...any)
|
|
|
|
Debug(format string, a ...any)
|
|
|
|
Warning(format string, a ...any)
|
|
|
|
Error(format string, a ...any)
|
|
|
|
Fatalln(format string, a ...any)
|
|
|
|
MarkDone()
|
|
|
|
Must(err error)
|
|
|
|
}
|
|
|
|
|
|
|
|
colorConsole struct {
|
|
|
|
enable bool
|
|
|
|
}
|
|
|
|
|
|
|
|
// for idea log
|
|
|
|
ideaConsole struct{}
|
|
|
|
)
|
|
|
|
|
|
|
|
// NewConsole returns an instance of Console
|
|
|
|
func NewConsole(idea bool) Console {
|
|
|
|
if idea {
|
|
|
|
return NewIdeaConsole()
|
|
|
|
}
|
|
|
|
return NewColorConsole()
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewColorConsole returns an instance of colorConsole
|
|
|
|
func NewColorConsole(enable ...bool) Console {
|
|
|
|
logEnable := true
|
|
|
|
for _, e := range enable {
|
|
|
|
logEnable = e
|
|
|
|
}
|
|
|
|
return &colorConsole{
|
|
|
|
enable: logEnable,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *colorConsole) Info(format string, a ...any) {
|
|
|
|
if !c.enable {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
msg := fmt.Sprintf(format, a...)
|
|
|
|
fmt.Println(msg)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *colorConsole) Debug(format string, a ...any) {
|
|
|
|
if !c.enable {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
println(color.LightCyan.Sprintf(format, a...))
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *colorConsole) Success(format string, a ...any) {
|
|
|
|
if !c.enable {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
println(color.LightGreen.Sprintf(format, a...))
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *colorConsole) Warning(format string, a ...any) {
|
|
|
|
if !c.enable {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
println(color.LightYellow.Sprintf(format, a...))
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *colorConsole) Error(format string, a ...any) {
|
|
|
|
if !c.enable {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
println(color.LightRed.Sprintf(format, a...))
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *colorConsole) Fatalln(format string, a ...any) {
|
|
|
|
if !c.enable {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
c.Error(format, a...)
|
|
|
|
os.Exit(1)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *colorConsole) MarkDone() {
|
|
|
|
if !c.enable {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
c.Success("Done.")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *colorConsole) Must(err error) {
|
|
|
|
if !c.enable {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if err != nil {
|
|
|
|
c.Fatalln("%+v", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewIdeaConsole returns an instance of ideaConsole
|
|
|
|
func NewIdeaConsole() Console {
|
|
|
|
return &ideaConsole{}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (i *ideaConsole) Info(format string, a ...any) {
|
|
|
|
msg := fmt.Sprintf(format, a...)
|
|
|
|
fmt.Println(msg)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (i *ideaConsole) Debug(format string, a ...any) {
|
|
|
|
fmt.Println(color.LightCyan.Sprintf(format, a...))
|
|
|
|
}
|
|
|
|
|
|
|
|
func (i *ideaConsole) Success(format string, a ...any) {
|
|
|
|
msg := fmt.Sprintf(format, a...)
|
|
|
|
fmt.Println("[SUCCESS]: ", msg)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (i *ideaConsole) Warning(format string, a ...any) {
|
|
|
|
msg := fmt.Sprintf(format, a...)
|
|
|
|
fmt.Println("[WARNING]: ", msg)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (i *ideaConsole) Error(format string, a ...any) {
|
|
|
|
msg := fmt.Sprintf(format, a...)
|
|
|
|
fmt.Println("[ERROR]: ", msg)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (i *ideaConsole) Fatalln(format string, a ...any) {
|
|
|
|
i.Error(format, a...)
|
|
|
|
os.Exit(1)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (i *ideaConsole) MarkDone() {
|
|
|
|
i.Success("Done.")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (i *ideaConsole) Must(err error) {
|
|
|
|
if err != nil {
|
|
|
|
i.Fatalln("%+v", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func println(msg any) {
|
|
|
|
fmt.Println(msg)
|
|
|
|
}
|
|
|
|
|
|
|
|
var defaultConsole = &colorConsole{enable: true}
|
|
|
|
|
|
|
|
func Success(format string, a ...any) {
|
|
|
|
defaultConsole.Success(format, a...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Info(format string, a ...any) {
|
|
|
|
defaultConsole.Info(format, a...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Debug(format string, a ...any) {
|
|
|
|
defaultConsole.Debug(format, a...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Warning(format string, a ...any) {
|
|
|
|
defaultConsole.Warning(format, a...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Error(format string, a ...any) {
|
|
|
|
defaultConsole.Error(format, a...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Fatalln(format string, a ...any) {
|
|
|
|
defaultConsole.Fatalln(format, a...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func MarkDone() {
|
|
|
|
defaultConsole.MarkDone()
|
|
|
|
}
|
|
|
|
|
|
|
|
func Must(err error) {
|
|
|
|
defaultConsole.Must(err)
|
|
|
|
}
|