You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-zero/tools/goctl/util/console/console.go

193 lines
3.5 KiB
Go

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)
}