summaryrefslogtreecommitdiff
path: root/internal/color
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2021-09-06 09:22:21 +0300
committerPaul Buetow <paul@buetow.org>2021-09-06 09:22:21 +0300
commit2c1c70313bb03cf2b2d7e7afadb07a48ff6bb690 (patch)
tree2ea3402bc6dd2d3e3ce0754eb3d5c90305e87c2e /internal/color
parentc895b3c8293ddbf46d66278061d7e0127adc57f7 (diff)
REMOTE and CLIENT colors are brushed correctly too now
Diffstat (limited to 'internal/color')
-rw-r--r--internal/color/brush/brush.go231
1 files changed, 149 insertions, 82 deletions
diff --git a/internal/color/brush/brush.go b/internal/color/brush/brush.go
index 415028a..785a0d0 100644
--- a/internal/color/brush/brush.go
+++ b/internal/color/brush/brush.go
@@ -8,105 +8,165 @@ import (
"github.com/mimecast/dtail/internal/protocol"
)
-// Add some color to log lines received from remote servers.
+func paintSeverity(sb *strings.Builder, text string) bool {
+ switch {
+ case strings.HasPrefix(text, "WARN"):
+ color.PaintWithAttr(sb, text,
+ config.Client.TermColors.Common.SeverityWarnFg,
+ config.Client.TermColors.Common.SeverityWarnBg,
+ config.Client.TermColors.Common.SeverityWarnAttr)
+
+ case strings.HasPrefix(text, "ERROR"):
+ color.PaintWithAttr(sb, text,
+ config.Client.TermColors.Common.SeverityErrorFg,
+ config.Client.TermColors.Common.SeverityErrorBg,
+ config.Client.TermColors.Common.SeverityErrorAttr)
+
+ case strings.HasPrefix(text, "FATAL"):
+ color.PaintWithAttr(sb, text,
+ config.Client.TermColors.Common.SeverityFatalFg,
+ config.Client.TermColors.Common.SeverityFatalBg,
+ config.Client.TermColors.Common.SeverityFatalAttr)
+
+ default:
+ return false
+ }
+
+ return true
+}
+
func paintRemote(sb *strings.Builder, line string) {
splitted := strings.SplitN(line, protocol.FieldDelimiter, 6)
color.PaintWithAttr(sb, splitted[0],
- config.Client.TermColors.RemoteStrFg,
- config.Client.TermColors.RemoteStrBg,
- config.Client.TermColors.RemoteStrAttr)
+ config.Client.TermColors.Remote.RemoteFg,
+ config.Client.TermColors.Remote.RemoteBg,
+ config.Client.TermColors.Remote.RemoteAttr)
color.PaintWithAttr(sb, protocol.FieldDelimiter,
- config.Client.TermColors.DelimiterFg,
- config.Client.TermColors.DelimiterBg,
- config.Client.TermColors.DelimiterAttr)
+ config.Client.TermColors.Remote.DelimiterFg,
+ config.Client.TermColors.Remote.DelimiterBg,
+ config.Client.TermColors.Remote.DelimiterAttr)
color.PaintWithAttr(sb, splitted[1],
- config.Client.TermColors.RemoteServerFg,
- config.Client.TermColors.RemoteServerBg,
- config.Client.TermColors.RemoteServerAttr)
+ config.Client.TermColors.Remote.HostnameFg,
+ config.Client.TermColors.Remote.HostnameBg,
+ config.Client.TermColors.Remote.HostnameAttr)
color.PaintWithAttr(sb, protocol.FieldDelimiter,
- config.Client.TermColors.DelimiterFg,
- config.Client.TermColors.DelimiterBg,
- config.Client.TermColors.DelimiterAttr)
+ config.Client.TermColors.Remote.DelimiterFg,
+ config.Client.TermColors.Remote.DelimiterBg,
+ config.Client.TermColors.Remote.DelimiterAttr)
if splitted[2] == "100" {
color.PaintWithAttr(sb, splitted[2],
- config.Client.TermColors.RemoteStatsOkFg,
- config.Client.TermColors.RemoteStatsOkBg,
- config.Client.TermColors.RemoteStatsOkAttr)
+ config.Client.TermColors.Remote.StatsOkFg,
+ config.Client.TermColors.Remote.StatsOkBg,
+ config.Client.TermColors.Remote.StatsOkAttr)
} else {
color.PaintWithAttr(sb, splitted[2],
- config.Client.TermColors.RemoteStatsWarnFg,
- config.Client.TermColors.RemoteStatsWarnBg,
- config.Client.TermColors.RemoteStatsWarnAttr)
+ config.Client.TermColors.Remote.StatsWarnFg,
+ config.Client.TermColors.Remote.StatsWarnBg,
+ config.Client.TermColors.Remote.StatsWarnAttr)
}
color.PaintWithAttr(sb, protocol.FieldDelimiter,
- config.Client.TermColors.DelimiterFg,
- config.Client.TermColors.DelimiterBg,
- config.Client.TermColors.DelimiterAttr)
+ config.Client.TermColors.Remote.DelimiterFg,
+ config.Client.TermColors.Remote.DelimiterBg,
+ config.Client.TermColors.Remote.DelimiterAttr)
color.PaintWithAttr(sb, splitted[3],
- config.Client.TermColors.RemoteCountFg,
- config.Client.TermColors.RemoteCountBg,
- config.Client.TermColors.RemoteCountAttr)
+ config.Client.TermColors.Remote.CountFg,
+ config.Client.TermColors.Remote.CountBg,
+ config.Client.TermColors.Remote.CountAttr)
color.PaintWithAttr(sb, protocol.FieldDelimiter,
- config.Client.TermColors.DelimiterFg,
- config.Client.TermColors.DelimiterBg,
- config.Client.TermColors.DelimiterAttr)
+ config.Client.TermColors.Remote.DelimiterFg,
+ config.Client.TermColors.Remote.DelimiterBg,
+ config.Client.TermColors.Remote.DelimiterAttr)
color.PaintWithAttr(sb, splitted[4],
- config.Client.TermColors.RemoteIdFg,
- config.Client.TermColors.RemoteIdBg,
- config.Client.TermColors.RemoteIdAttr)
+ config.Client.TermColors.Remote.IdFg,
+ config.Client.TermColors.Remote.IdBg,
+ config.Client.TermColors.Remote.IdAttr)
color.PaintWithAttr(sb, protocol.FieldDelimiter,
- config.Client.TermColors.DelimiterFg,
- config.Client.TermColors.DelimiterBg,
- config.Client.TermColors.DelimiterAttr)
+ config.Client.TermColors.Remote.DelimiterFg,
+ config.Client.TermColors.Remote.DelimiterBg,
+ config.Client.TermColors.Remote.DelimiterAttr)
- log := splitted[5]
+ if paintSeverity(sb, splitted[5]) {
+ return
+ }
+ color.PaintWithAttr(sb, splitted[5],
+ config.Client.TermColors.Remote.TextFg,
+ config.Client.TermColors.Remote.TextBg,
+ config.Client.TermColors.Remote.TextAttr)
+}
- switch {
- case strings.HasPrefix(log, "WARN"):
- color.PaintWithAttr(sb, log,
- config.Client.TermColors.RemoteWarnFg,
- config.Client.TermColors.RemoteWarnBg,
- config.Client.TermColors.RemoteWarnAttr)
-
- case strings.HasPrefix(log, "ERROR"):
- color.PaintWithAttr(sb, log,
- config.Client.TermColors.RemoteErrorFg,
- config.Client.TermColors.RemoteErrorBg,
- config.Client.TermColors.RemoteErrorAttr)
-
- case strings.HasPrefix(log, "FATAL"):
- color.PaintWithAttr(sb, log,
- config.Client.TermColors.RemoteFatalFg,
- config.Client.TermColors.RemoteFatalBg,
- config.Client.TermColors.RemoteFatalAttr)
-
- case strings.HasPrefix(log, "DEBUG"):
- color.PaintWithAttr(sb, log,
- config.Client.TermColors.RemoteDebugFg,
- config.Client.TermColors.RemoteDebugBg,
- config.Client.TermColors.RemoteDebugAttr)
-
- case strings.HasPrefix(log, "TRACE"):
- color.PaintWithAttr(sb, log,
- config.Client.TermColors.RemoteTraceFg,
- config.Client.TermColors.RemoteTraceBg,
- config.Client.TermColors.RemoteTraceAttr)
+func paintClient(sb *strings.Builder, line string) {
+ splitted := strings.SplitN(line, protocol.FieldDelimiter, 3)
- default:
- color.PaintWithAttr(sb, log,
- config.Client.TermColors.RemoteTextFg,
- config.Client.TermColors.RemoteTextBg,
- config.Client.TermColors.RemoteTextAttr)
+ color.PaintWithAttr(sb, splitted[0],
+ config.Client.TermColors.Client.ClientFg,
+ config.Client.TermColors.Client.ClientBg,
+ config.Client.TermColors.Client.ClientAttr)
+
+ color.PaintWithAttr(sb, protocol.FieldDelimiter,
+ config.Client.TermColors.Client.DelimiterFg,
+ config.Client.TermColors.Client.DelimiterBg,
+ config.Client.TermColors.Client.DelimiterAttr)
+
+ color.PaintWithAttr(sb, splitted[1],
+ config.Client.TermColors.Client.HostnameFg,
+ config.Client.TermColors.Client.HostnameBg,
+ config.Client.TermColors.Client.HostnameAttr)
+
+ color.PaintWithAttr(sb, protocol.FieldDelimiter,
+ config.Client.TermColors.Client.DelimiterFg,
+ config.Client.TermColors.Client.DelimiterBg,
+ config.Client.TermColors.Client.DelimiterAttr)
+
+ if paintSeverity(sb, splitted[2]) {
+ return
}
+
+ color.PaintWithAttr(sb, splitted[2],
+ config.Client.TermColors.Client.TextFg,
+ config.Client.TermColors.Client.TextBg,
+ config.Client.TermColors.Client.TextAttr)
+}
+
+func paintServer(sb *strings.Builder, line string) {
+ splitted := strings.SplitN(line, protocol.FieldDelimiter, 3)
+
+ color.PaintWithAttr(sb, splitted[0],
+ config.Client.TermColors.Server.ServerFg,
+ config.Client.TermColors.Server.ServerBg,
+ config.Client.TermColors.Server.ServerAttr)
+
+ color.PaintWithAttr(sb, protocol.FieldDelimiter,
+ config.Client.TermColors.Server.DelimiterFg,
+ config.Client.TermColors.Server.DelimiterBg,
+ config.Client.TermColors.Server.DelimiterAttr)
+
+ color.PaintWithAttr(sb, splitted[1],
+ config.Client.TermColors.Server.HostnameFg,
+ config.Client.TermColors.Server.HostnameBg,
+ config.Client.TermColors.Server.HostnameAttr)
+
+ color.PaintWithAttr(sb, protocol.FieldDelimiter,
+ config.Client.TermColors.Server.DelimiterFg,
+ config.Client.TermColors.Server.DelimiterBg,
+ config.Client.TermColors.Server.DelimiterAttr)
+
+ if paintSeverity(sb, splitted[2]) {
+ return
+ }
+
+ color.PaintWithAttr(sb, splitted[2],
+ config.Client.TermColors.Server.TextFg,
+ config.Client.TermColors.Server.TextBg,
+ config.Client.TermColors.Server.TextAttr)
}
// Colorfy a given line based on the line's content.
@@ -117,18 +177,25 @@ func Colorfy(line string) string {
case strings.HasPrefix(line, "REMOTE"):
paintRemote(&sb, line)
- case strings.Contains(line, "ERROR"):
- color.PaintWithAttr(&sb, line,
- config.Client.TermColors.ClientErrorFg,
- config.Client.TermColors.ClientErrorBg,
- config.Client.TermColors.ClientErrorAttr)
-
- case strings.Contains(line, "WARN"):
- color.PaintWithAttr(&sb, line,
- config.Client.TermColors.ClientWarnFg,
- config.Client.TermColors.ClientWarnBg,
- config.Client.TermColors.ClientWarnAttr)
-
+ case strings.HasPrefix(line, "CLIENT"):
+ paintClient(&sb, line)
+
+ case strings.HasPrefix(line, "SERVER"):
+ paintServer(&sb, line)
+
+ /*
+ case strings.Contains(line, "ERROR"):
+ color.PaintWithAttr(&sb, line,
+ config.Client.TermColors.ClientErrorFg,
+ config.Client.TermColors.ClientErrorBg,
+ config.Client.TermColors.ClientErrorAttr)
+
+ case strings.Contains(line, "WARN"):
+ color.PaintWithAttr(&sb, line,
+ config.Client.TermColors.ClientWarnFg,
+ config.Client.TermColors.ClientWarnBg,
+ config.Client.TermColors.ClientWarnAttr)
+ */
default:
color.PaintWithAttr(&sb, line,
color.FgDefault,