diff --git a/colorization.go b/colorization.go index ee85180..2f750f5 100644 --- a/colorization.go +++ b/colorization.go @@ -12,12 +12,30 @@ type colorConfig struct { } var colorConfigs = []colorConfig{ - {color.New(color.FgHiBlue), color.New(color.FgBlue)}, - {color.New(color.FgHiCyan), color.New(color.FgCyan)}, - {color.New(color.FgHiGreen), color.New(color.FgGreen)}, - {color.New(color.FgHiMagenta), color.New(color.FgMagenta)}, - {color.New(color.FgHiRed), color.New(color.FgRed)}, - {color.New(color.FgHiYellow), color.New(color.FgYellow)}, + { + color.New(color.FgHiBlue).Add(color.Bold), + color.New(color.FgBlue).Add(color.Bold), + }, + { + color.New(color.FgHiCyan).Add(color.Bold), + color.New(color.FgCyan).Add(color.Bold), + }, + { + color.New(color.FgHiGreen).Add(color.Bold), + color.New(color.FgGreen).Add(color.Bold), + }, + { + color.New(color.FgHiMagenta).Add(color.Bold), + color.New(color.FgMagenta).Add(color.Bold), + }, + { + color.New(color.FgHiRed).Add(color.Bold), + color.New(color.FgRed).Add(color.Bold), + }, + { + color.New(color.FgHiYellow).Add(color.Bold), + color.New(color.FgYellow).Add(color.Bold), + }, } func getColorConfig(parts ...string) colorConfig { diff --git a/go.mod b/go.mod index 2470b4c..20e977d 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/atombender/ktail go 1.17 require ( + github.com/alecthomas/chroma v0.10.0 github.com/fatih/color v1.7.0 github.com/go-logr/logr v1.2.0 github.com/jpillora/backoff v1.0.0 @@ -16,6 +17,7 @@ require ( require ( cloud.google.com/go v0.81.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dlclark/regexp2 v1.4.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/google/go-cmp v0.5.5 // indirect diff --git a/go.sum b/go.sum index 7aecf57..8c47b94 100644 --- a/go.sum +++ b/go.sum @@ -49,6 +49,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= +github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -62,6 +64,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= +github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= diff --git a/main.go b/main.go index 950dcc5..4368104 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "bytes" "context" + "encoding/json" "errors" "fmt" "os" @@ -10,6 +11,8 @@ import ( "sync" "text/template" + _ "github.com/alecthomas/chroma/formatters" + "github.com/alecthomas/chroma/quick" "github.com/fatih/color" "github.com/go-logr/logr" "github.com/spf13/pflag" @@ -220,7 +223,18 @@ func main() { line += " " } - line += event.Message + payload := event.Message + if !noColor && len(payload) >= 2 && payload[0] == '{' && payload[len(payload)-1] == '}' { + var dest interface{} + if err := json.Unmarshal([]byte(payload), &dest); err == nil { + var buf bytes.Buffer + if err := quick.Highlight(&buf, payload, "json", "terminal256", "monokai"); err == nil { + payload = buf.String() + } + } + } + + line += payload _, err := fmt.Fprintln(os.Stdout, line) return err