GitRepositoryManager/echo/echo.go
Mikołaj Pęczkowski 5fd9bc851b Add "echo" as logger
This allow to test ouput, and specify ouput other then os.Stdout
2021-11-07 19:59:11 +01:00

73 lines
1.4 KiB
Go

package echo
import (
"fmt"
"io"
"os"
)
const (
colorReset = "\033[0m"
colorRed = "\033[31m"
colorGreen = "\033[32m"
colorYellow = "\033[33m"
colorBlue = "\033[34m"
)
var (
useColor bool = false
output io.Writer = os.Stdout
)
func Color(enabled bool) {
useColor = enabled
}
func Output(writer io.Writer) {
output = writer
}
func ErrorfMsg(format string, a ...interface{}) error {
msg := fmt.Sprintf(format, a...)
if useColor {
msg = fmt.Sprintf("%vError:%v %v", colorRed, colorReset, msg)
} else {
msg = fmt.Sprintf("Error: %v", msg)
}
return write(msg)
}
func InfoFMsg(format string, a ...interface{}) error {
msg := fmt.Sprintf(format, a...)
if useColor {
msg = fmt.Sprintf("%vInfo:%v %v", colorBlue, colorReset, msg)
} else {
msg = fmt.Sprintf("Info: %v", msg)
}
return write(msg)
}
func GreenMessageF(format string, a ...interface{}) error {
return writeWithColor(fmt.Sprintf(format, a...), colorGreen)
}
func YellowMessageF(format string, a ...interface{}) error {
return writeWithColor(fmt.Sprintf(format, a...), colorYellow)
}
func RedMessageF(format string, a ...interface{}) error {
return writeWithColor(fmt.Sprintf(format, a...), colorRed)
}
func writeWithColor(msg string, color string) error {
if useColor {
return write(fmt.Sprintf("%v%v%v", color, msg, colorReset))
}
return write(msg)
}
func write(msg string) error {
_, err := fmt.Fprintln(output, msg)
return err
}