72 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			72 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
 | |
| }
 |