|
|
@ -0,0 +1,84 @@ |
|
|
|
package common |
|
|
|
|
|
|
|
import ( |
|
|
|
"fmt" |
|
|
|
"strings" |
|
|
|
) |
|
|
|
|
|
|
|
const ( |
|
|
|
ANSIReset = "\x1b[0m" |
|
|
|
ANSIBright = "\x1b[1m" |
|
|
|
ANSIDim = "\x1b[2m" |
|
|
|
ANSIUnderscore = "\x1b[4m" |
|
|
|
ANSIBlink = "\x1b[5m" |
|
|
|
ANSIReverse = "\x1b[7m" |
|
|
|
ANSIHidden = "\x1b[8m" |
|
|
|
|
|
|
|
ANSIFgBlack = "\x1b[30m" |
|
|
|
ANSIFgRed = "\x1b[31m" |
|
|
|
ANSIFgGreen = "\x1b[32m" |
|
|
|
ANSIFgYellow = "\x1b[33m" |
|
|
|
ANSIFgBlue = "\x1b[34m" |
|
|
|
ANSIFgMagenta = "\x1b[35m" |
|
|
|
ANSIFgCyan = "\x1b[36m" |
|
|
|
ANSIFgWhite = "\x1b[37m" |
|
|
|
|
|
|
|
ANSIBgBlack = "\x1b[40m" |
|
|
|
ANSIBgRed = "\x1b[41m" |
|
|
|
ANSIBgGreen = "\x1b[42m" |
|
|
|
ANSIBgYellow = "\x1b[43m" |
|
|
|
ANSIBgBlue = "\x1b[44m" |
|
|
|
ANSIBgMagenta = "\x1b[45m" |
|
|
|
ANSIBgCyan = "\x1b[46m" |
|
|
|
ANSIBgWhite = "\x1b[47m" |
|
|
|
) |
|
|
|
|
|
|
|
// color the string s with color 'color'
|
|
|
|
// unless s is already colored
|
|
|
|
func treat(s string, color string) string { |
|
|
|
if len(s) > 2 && s[:2] == "\x1b[" { |
|
|
|
return s |
|
|
|
} else { |
|
|
|
return color + s + ANSIReset |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func treatAll(color string, args ...interface{}) string { |
|
|
|
var parts []string |
|
|
|
for _, arg := range args { |
|
|
|
parts = append(parts, treat(fmt.Sprintf("%v", arg), color)) |
|
|
|
} |
|
|
|
return strings.Join(parts, "") |
|
|
|
} |
|
|
|
|
|
|
|
func Black(args ...interface{}) string { |
|
|
|
return treatAll(ANSIFgBlack, args...) |
|
|
|
} |
|
|
|
|
|
|
|
func Red(args ...interface{}) string { |
|
|
|
return treatAll(ANSIFgRed, args...) |
|
|
|
} |
|
|
|
|
|
|
|
func Green(args ...interface{}) string { |
|
|
|
return treatAll(ANSIFgGreen, args...) |
|
|
|
} |
|
|
|
|
|
|
|
func Yellow(args ...interface{}) string { |
|
|
|
return treatAll(ANSIFgYellow, args...) |
|
|
|
} |
|
|
|
|
|
|
|
func Blue(args ...interface{}) string { |
|
|
|
return treatAll(ANSIFgBlue, args...) |
|
|
|
} |
|
|
|
|
|
|
|
func Magenta(args ...interface{}) string { |
|
|
|
return treatAll(ANSIFgMagenta, args...) |
|
|
|
} |
|
|
|
|
|
|
|
func Cyan(args ...interface{}) string { |
|
|
|
return treatAll(ANSIFgCyan, args...) |
|
|
|
} |
|
|
|
|
|
|
|
func White(args ...interface{}) string { |
|
|
|
return treatAll(ANSIFgWhite, args...) |
|
|
|
} |