summaryrefslogtreecommitdiff
path: root/color/colorfy.go
diff options
context:
space:
mode:
Diffstat (limited to 'color/colorfy.go')
-rw-r--r--color/colorfy.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/color/colorfy.go b/color/colorfy.go
new file mode 100644
index 0000000..9ae46f5
--- /dev/null
+++ b/color/colorfy.go
@@ -0,0 +1,58 @@
+package color
+
+import (
+ "fmt"
+ "strings"
+)
+
+// Add some color to log lines received from remote servers.
+func paintRemote(line string) string {
+ splitted := strings.Split(line, "|")
+ if splitted[2] == "100" {
+ splitted[2] = Paint(BgGreen, splitted[2])
+ } else {
+ splitted[2] = Paint(BgRed, splitted[2])
+ }
+ info := strings.Join(splitted[0:5], "|")
+ log := strings.Join(splitted[5:], "|")
+
+ if strings.HasPrefix(log, "WARN") {
+ log = Paint(BgYellow, log)
+ } else if strings.HasPrefix(log, "ERROR") {
+ log = Paint(BgRed, log)
+ } else if strings.HasPrefix(log, "FATAL") {
+ log = Attr(Bold, Paint(BgRed, log))
+ } else {
+ log = Paint(Blue, log)
+ }
+
+ return fmt.Sprintf("%s|%s", info, log)
+}
+
+// Add some color to stats generated by the client.
+func paintClientStats(line string) string {
+ splitted := strings.Split(line, "|")
+ first := strings.Join(splitted[0:4], "|")
+ connected := Paint(BgBlue, splitted[4])
+ last := strings.Join(splitted[5:], "|")
+
+ return fmt.Sprintf("%s|%s|%s", first, connected, last)
+}
+
+// Colorfy a given line based on the line's content.
+func Colorfy(line string) string {
+ if strings.HasPrefix(line, "REMOTE") {
+ return paintRemote(line)
+ }
+ if strings.HasPrefix(line, "CLIENT") && strings.Contains(line, "|stats|") {
+ return paintClientStats(line)
+ }
+ if strings.Contains(line, "ERROR") {
+ return Paint(Magenta, line)
+ }
+ if strings.Contains(line, "WARN") {
+ return Paint(Magenta, line)
+ }
+
+ return line
+}