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 }