Skip to content

Commit

Permalink
feat: automatically colorize JSON.
Browse files Browse the repository at this point in the history
  • Loading branch information
atombender committed Oct 3, 2022
1 parent 02f1b62 commit 8dc2804
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 7 deletions.
30 changes: 24 additions & 6 deletions colorization.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand All @@ -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=
Expand Down
16 changes: 15 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@ package main
import (
"bytes"
"context"
"encoding/json"
"errors"
"fmt"
"os"
"regexp"
"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"
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 8dc2804

Please sign in to comment.