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 }