From a8c9ede77e7509ecde5522768f585b647ae6ca9f Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Tue, 21 Nov 2023 11:40:55 +0100 Subject: [PATCH 1/8] added -L flag to highligh lines in alternating bg color --- cfg/config.go | 9 +++++++-- cmd/root.go | 1 + cmd/tablizer.go | 12 ++++++------ lib/helpers.go | 27 ++++++++++++++++++++++----- tablizer.1 | 7 ++++--- tablizer.pod | 5 +++-- 6 files changed, 43 insertions(+), 18 deletions(-) diff --git a/cfg/config.go b/cfg/config.go index beb8fad..94e6e20 100644 --- a/cfg/config.go +++ b/cfg/config.go @@ -22,7 +22,6 @@ import ( "os" "regexp" - "github.com/glycerine/zygomys/zygo" "github.com/gookit/color" ) @@ -46,6 +45,7 @@ type Config struct { Pattern string PatternR *regexp.Regexp UseFuzzySearch bool + UseHighlight bool SortMode string SortDescending bool @@ -55,7 +55,8 @@ type Config struct { FIXME: make configurable somehow, config file or ENV see https://github.com/gookit/color. */ - ColorStyle color.Style + ColorStyle color.Style + HighlightStyle color.Style NoColor bool @@ -104,13 +105,16 @@ func Colors() map[color.Level]map[string]color.Color { return map[color.Level]map[string]color.Color{ color.Level16: { "bg": color.BgGreen, "fg": color.FgBlack, + "hlbg": color.BgGray, "hlfg": color.FgWhite, }, color.Level256: { "bg": color.BgLightGreen, "fg": color.FgBlack, + "hlbg": color.BgGray, "hlfg": color.FgWhite, }, color.LevelRgb: { // FIXME: maybe use something nicer "bg": color.BgLightGreen, "fg": color.FgBlack, + "hlbg": color.BgGray, "hlfg": color.FgWhite, }, } } @@ -123,6 +127,7 @@ func (c *Config) DetermineColormode() { level := color.TermColorLevel() colors := Colors() c.ColorStyle = color.New(colors[level]["bg"], colors[level]["fg"]) + c.HighlightStyle = color.New(colors[level]["hlbg"], colors[level]["hlfg"]) } } diff --git a/cmd/root.go b/cmd/root.go index d3bb98b..6557ef3 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -118,6 +118,7 @@ func Execute() { rootCmd.PersistentFlags().BoolVarP(&conf.InvertMatch, "invert-match", "v", false, "select non-matching rows") rootCmd.PersistentFlags().BoolVarP(&ShowManual, "man", "m", false, "Display manual page") rootCmd.PersistentFlags().BoolVarP(&conf.UseFuzzySearch, "fuzzy", "z", false, "Use fuzzy searching") + rootCmd.PersistentFlags().BoolVarP(&conf.UseHighlight, "highlight-lines", "L", false, "Use alternating background colors") rootCmd.PersistentFlags().StringVarP(&ShowCompletion, "completion", "", "", "Display completion code") rootCmd.PersistentFlags().StringVarP(&conf.Separator, "separator", "s", cfg.DefaultSeparator, "Custom field separator") rootCmd.PersistentFlags().StringVarP(&conf.Columns, "columns", "c", "", "Only show the speficied columns (separated by ,)") diff --git a/cmd/tablizer.go b/cmd/tablizer.go index 300e56c..8811831 100644 --- a/cmd/tablizer.go +++ b/cmd/tablizer.go @@ -22,10 +22,11 @@ SYNOPSIS -X, --extended Enable extended output -M, --markdown Enable markdown table output -O, --orgtbl Enable org-mode table output - -S, --shell Enable shell evaluable ouput + -S, --shell Enable shell evaluable output -Y, --yaml Enable yaml output -C, --csv Enable CSV output -A, --ascii Default output mode, ascii tabular + -L, --hightlight-lines Use alternating background colors for tables Sort Mode Flags (mutually exclusive): -a, --sort-age sort according to age (duration) string @@ -38,7 +39,7 @@ SYNOPSIS -d, --debug Enable debugging -h, --help help for tablizer -m, --man Display manual page - -v, --version Print program version + -V, --version Print program version DESCRIPTION Many programs generate tabular output. But sometimes you need to @@ -313,10 +314,11 @@ Output Flags (mutually exclusive): -X, --extended Enable extended output -M, --markdown Enable markdown table output -O, --orgtbl Enable org-mode table output - -S, --shell Enable shell evaluable ouput + -S, --shell Enable shell evaluable output -Y, --yaml Enable yaml output -C, --csv Enable CSV output -A, --ascii Default output mode, ascii tabular + -L, --hightlight-lines Use alternating background colors for tables Sort Mode Flags (mutually exclusive): -a, --sort-age sort according to age (duration) string @@ -326,12 +328,10 @@ Sort Mode Flags (mutually exclusive): Other Flags: --completion Generate the autocompletion script for - -l --load-path Where to search for lisp plugins. Maybe a file or - a directory containing files with *.zy extension -d, --debug Enable debugging -h, --help help for tablizer -m, --man Display manual page - -v, --version Print program version + -V, --version Print program version ` diff --git a/lib/helpers.go b/lib/helpers.go index dff6fbc..90707a0 100644 --- a/lib/helpers.go +++ b/lib/helpers.go @@ -20,13 +20,14 @@ package lib import ( "errors" "fmt" - "github.com/gookit/color" - "github.com/tlinden/tablizer/cfg" "os" "regexp" "sort" "strconv" "strings" + + "github.com/gookit/color" + "github.com/tlinden/tablizer/cfg" ) func contains(s []int, e int) bool { @@ -155,9 +156,25 @@ func trimRow(row []string) []string { func colorizeData(c cfg.Config, output string) string { if len(c.Pattern) > 0 && !c.NoColor && color.IsConsole(os.Stdout) { r := regexp.MustCompile("(" + c.Pattern + ")") - return r.ReplaceAllStringFunc(output, func(in string) string { - return c.ColorStyle.Sprint(in) - }) + highlight := true + colorized := "" + + for _, line := range strings.Split(output, "\n") { + if c.UseHighlight { + if highlight { + line = c.HighlightStyle.Sprint(line) + } + highlight = !highlight + } else { + line = r.ReplaceAllStringFunc(line, func(in string) string { + return c.ColorStyle.Sprint(in) + }) + } + + colorized += line + "\n" + } + + return colorized } else { return output } diff --git a/tablizer.1 b/tablizer.1 index c651e8d..d60e3f0 100644 --- a/tablizer.1 +++ b/tablizer.1 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "TABLIZER 1" -.TH TABLIZER 1 "2023-05-06" "1" "User Commands" +.TH TABLIZER 1 "2023-11-21" "1" "User Commands" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -160,10 +160,11 @@ tablizer \- Manipulate tabular output of other programs \& \-X, \-\-extended Enable extended output \& \-M, \-\-markdown Enable markdown table output \& \-O, \-\-orgtbl Enable org\-mode table output -\& \-S, \-\-shell Enable shell evaluable ouput +\& \-S, \-\-shell Enable shell evaluable output \& \-Y, \-\-yaml Enable yaml output \& \-C, \-\-csv Enable CSV output \& \-A, \-\-ascii Default output mode, ascii tabular +\& \-L, \-\-hightlight\-lines Use alternating background colors for tables \& \& Sort Mode Flags (mutually exclusive): \& \-a, \-\-sort\-age sort according to age (duration) string @@ -176,7 +177,7 @@ tablizer \- Manipulate tabular output of other programs \& \-d, \-\-debug Enable debugging \& \-h, \-\-help help for tablizer \& \-m, \-\-man Display manual page -\& \-v, \-\-version Print program version +\& \-V, \-\-version Print program version .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" diff --git a/tablizer.pod b/tablizer.pod index b75c080..7c72985 100644 --- a/tablizer.pod +++ b/tablizer.pod @@ -21,10 +21,11 @@ tablizer - Manipulate tabular output of other programs -X, --extended Enable extended output -M, --markdown Enable markdown table output -O, --orgtbl Enable org-mode table output - -S, --shell Enable shell evaluable ouput + -S, --shell Enable shell evaluable output -Y, --yaml Enable yaml output -C, --csv Enable CSV output -A, --ascii Default output mode, ascii tabular + -L, --hightlight-lines Use alternating background colors for tables Sort Mode Flags (mutually exclusive): -a, --sort-age sort according to age (duration) string @@ -37,7 +38,7 @@ tablizer - Manipulate tabular output of other programs -d, --debug Enable debugging -h, --help help for tablizer -m, --man Display manual page - -v, --version Print program version + -V, --version Print program version =head1 DESCRIPTION From 3c910ca08f742510191ea885a9631794db5f13a9 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Tue, 21 Nov 2023 17:41:04 +0100 Subject: [PATCH 2/8] works but is ugly :( --- cfg/config.go | 10 +++++----- lib/helpers.go | 17 +++++++---------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/cfg/config.go b/cfg/config.go index 94e6e20..acafbcc 100644 --- a/cfg/config.go +++ b/cfg/config.go @@ -104,17 +104,17 @@ var ValidHooks []string func Colors() map[color.Level]map[string]color.Color { return map[color.Level]map[string]color.Color{ color.Level16: { - "bg": color.BgGreen, "fg": color.FgBlack, + "bg": color.BgGreen, "fg": color.FgWhite, "hlbg": color.BgGray, "hlfg": color.FgWhite, }, color.Level256: { - "bg": color.BgLightGreen, "fg": color.FgBlack, - "hlbg": color.BgGray, "hlfg": color.FgWhite, + "bg": color.BgLightGreen, "fg": color.FgWhite, + "hlbg": color.BgLightBlue, "hlfg": color.FgWhite, }, color.LevelRgb: { // FIXME: maybe use something nicer - "bg": color.BgLightGreen, "fg": color.FgBlack, - "hlbg": color.BgGray, "hlfg": color.FgWhite, + "bg": color.BgLightGreen, "fg": color.FgWhite, + "hlbg": color.BgBlue, "hlfg": color.FgWhite, }, } } diff --git a/lib/helpers.go b/lib/helpers.go index 90707a0..9398cb2 100644 --- a/lib/helpers.go +++ b/lib/helpers.go @@ -156,21 +156,18 @@ func trimRow(row []string) []string { func colorizeData(c cfg.Config, output string) string { if len(c.Pattern) > 0 && !c.NoColor && color.IsConsole(os.Stdout) { r := regexp.MustCompile("(" + c.Pattern + ")") + return r.ReplaceAllStringFunc(output, func(in string) string { + return c.ColorStyle.Sprint(in) + }) + } else if c.UseHighlight && color.IsConsole(os.Stdout) { highlight := true colorized := "" for _, line := range strings.Split(output, "\n") { - if c.UseHighlight { - if highlight { - line = c.HighlightStyle.Sprint(line) - } - highlight = !highlight - } else { - line = r.ReplaceAllStringFunc(line, func(in string) string { - return c.ColorStyle.Sprint(in) - }) + if highlight { + line = c.HighlightStyle.Sprint(line) } - + highlight = !highlight colorized += line + "\n" } From 811173ddb469c3d17bc604b97be03849f4725aab Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Wed, 22 Nov 2023 10:30:40 +0100 Subject: [PATCH 3/8] fixed alternating highlighting, now looks reasonable --- cfg/config.go | 12 +++++++++--- lib/helpers.go | 32 +++++++++++++++++++++++++------- lib/printer.go | 17 ++++++++++++----- 3 files changed, 46 insertions(+), 15 deletions(-) diff --git a/cfg/config.go b/cfg/config.go index acafbcc..82b1c9c 100644 --- a/cfg/config.go +++ b/cfg/config.go @@ -55,8 +55,10 @@ type Config struct { FIXME: make configurable somehow, config file or ENV see https://github.com/gookit/color. */ - ColorStyle color.Style - HighlightStyle color.Style + ColorStyle color.Style + HighlightStyle color.Style + NoHighlightStyle color.Style + HighlightHdrStyle color.Style NoColor bool @@ -114,7 +116,9 @@ func Colors() map[color.Level]map[string]color.Color { color.LevelRgb: { // FIXME: maybe use something nicer "bg": color.BgLightGreen, "fg": color.FgWhite, - "hlbg": color.BgBlue, "hlfg": color.FgWhite, + "hlbg": color.BgHiGreen, "hlfg": color.FgWhite, + "nohlbg": color.BgWhite, "nohlfg": color.FgLightGreen, + "hdrbg": color.BgBlue, "hdrfg": color.FgWhite, }, } } @@ -128,6 +132,8 @@ func (c *Config) DetermineColormode() { colors := Colors() c.ColorStyle = color.New(colors[level]["bg"], colors[level]["fg"]) c.HighlightStyle = color.New(colors[level]["hlbg"], colors[level]["hlfg"]) + c.NoHighlightStyle = color.New(colors[level]["nohlbg"], colors[level]["nohlfg"]) + c.HighlightHdrStyle = color.New(colors[level]["hdrbg"], colors[level]["hdrfg"]) } } diff --git a/lib/helpers.go b/lib/helpers.go index 9398cb2..df87336 100644 --- a/lib/helpers.go +++ b/lib/helpers.go @@ -154,24 +154,42 @@ func trimRow(row []string) []string { } func colorizeData(c cfg.Config, output string) string { - if len(c.Pattern) > 0 && !c.NoColor && color.IsConsole(os.Stdout) { - r := regexp.MustCompile("(" + c.Pattern + ")") - return r.ReplaceAllStringFunc(output, func(in string) string { - return c.ColorStyle.Sprint(in) - }) - } else if c.UseHighlight && color.IsConsole(os.Stdout) { + if c.UseHighlight && color.IsConsole(os.Stdout) { highlight := true colorized := "" + first := true for _, line := range strings.Split(output, "\n") { if highlight { - line = c.HighlightStyle.Sprint(line) + if first { + // we need to add two spaces to the header line + // because tablewriter omits them for some reason + // in pprint mode. This doesn't matter as long as + // we don't use colorization. But with colors the + // missing spaces can be seen. + if c.OutputMode == cfg.Ascii { + line = line + " " + } + + line = c.HighlightHdrStyle.Sprint(line) + first = false + } else { + line = c.HighlightStyle.Sprint(line) + } + } else { + line = c.NoHighlightStyle.Sprint(line) } highlight = !highlight + colorized += line + "\n" } return colorized + } else if len(c.Pattern) > 0 && !c.NoColor && color.IsConsole(os.Stdout) { + r := regexp.MustCompile("(" + c.Pattern + ")") + return r.ReplaceAllStringFunc(output, func(in string) string { + return c.ColorStyle.Sprint(in) + }) } else { return output } diff --git a/lib/printer.go b/lib/printer.go index 1d76222..7b6cdcd 100644 --- a/lib/printer.go +++ b/lib/printer.go @@ -20,15 +20,16 @@ package lib import ( "encoding/csv" "fmt" - "github.com/gookit/color" - "github.com/olekukonko/tablewriter" - "github.com/tlinden/tablizer/cfg" - "gopkg.in/yaml.v3" "io" "log" "regexp" "strconv" "strings" + + "github.com/gookit/color" + "github.com/olekukonko/tablewriter" + "github.com/tlinden/tablizer/cfg" + "gopkg.in/yaml.v3" ) func printData(w io.Writer, c cfg.Config, data *Tabdata) { @@ -148,9 +149,15 @@ func printAsciiData(w io.Writer, c cfg.Config, data *Tabdata) { table.SetRowSeparator("") table.SetHeaderLine(false) table.SetBorder(false) - table.SetTablePadding("\t") // pad with tabs table.SetNoWhiteSpace(true) + if !c.UseHighlight { + // the tabs destroy the highlighting + table.SetTablePadding("\t") // pad with tabs + } else { + table.SetTablePadding(" ") + } + table.Render() output(w, color.Sprint(colorizeData(c, tableString.String()))) } From f045adf44194c1b6270d406420f89fc8c9191764 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Wed, 22 Nov 2023 13:33:26 +0100 Subject: [PATCH 4/8] added config file support to set custom colors --- cfg/config.go | 136 ++++++++++++++++++++++++++++++++++++++++++++++-- cmd/root.go | 10 +++- cmd/tablizer.go | 2 + config.hcl | 12 +++++ go.mod | 24 +++++++-- go.sum | 54 +++++++++++++++---- tablizer.1 | 3 +- tablizer.pod | 32 ++++++++++++ 8 files changed, 253 insertions(+), 20 deletions(-) create mode 100644 config.hcl diff --git a/cfg/config.go b/cfg/config.go index 82b1c9c..ce1bab5 100644 --- a/cfg/config.go +++ b/cfg/config.go @@ -19,20 +19,36 @@ package cfg import ( "errors" "fmt" + "log" "os" "regexp" "github.com/glycerine/zygomys/zygo" "github.com/gookit/color" + "github.com/hashicorp/hcl/v2/hclsimple" ) const DefaultSeparator string = `(\s\s+|\t)` -const Version string = "v1.0.17" +const Version string = "v1.1.0" var DefaultLoadPath string = os.Getenv("HOME") + "/.config/tablizer/lisp" +var DefaultConfigfile string = os.Getenv("HOME") + "/.config/tablizer/config" var VERSION string // maintained by -x +// public config, set via config file or using defaults +type Configuration struct { + FG string `hcl:"FG"` + BG string `hcl:"BG"` + HighlightFG string `hcl:"HighlightFG"` + HighlightBG string `hcl:"HighlightBG"` + NoHighlightFG string `hcl:"NoHighlightFG"` + NoHighlightBG string `hcl:"NoHighlightBG"` + HighlightHdrFG string `hcl:"HighlightHdrFG"` + HighlightHdrBG string `hcl:"HighlightHdrBG"` +} + +// internal config type Config struct { Debug bool NoNumbering bool @@ -68,6 +84,11 @@ type Config struct { // a path containing lisp scripts to be loaded on startup LispLoadPath string + + // config file, optional + Configfile string + + Configuration Configuration } // maps outputmode short flags to output mode, ie. -O => -o orgtbl @@ -103,8 +124,8 @@ type Sortmode struct { var ValidHooks []string // default color schemes -func Colors() map[color.Level]map[string]color.Color { - return map[color.Level]map[string]color.Color{ +func (c *Config) Colors() map[color.Level]map[string]color.Color { + colors := map[color.Level]map[string]color.Color{ color.Level16: { "bg": color.BgGreen, "fg": color.FgWhite, "hlbg": color.BgGray, "hlfg": color.FgWhite, @@ -114,13 +135,62 @@ func Colors() map[color.Level]map[string]color.Color { "hlbg": color.BgLightBlue, "hlfg": color.FgWhite, }, color.LevelRgb: { - // FIXME: maybe use something nicer "bg": color.BgLightGreen, "fg": color.FgWhite, "hlbg": color.BgHiGreen, "hlfg": color.FgWhite, "nohlbg": color.BgWhite, "nohlfg": color.FgLightGreen, "hdrbg": color.BgBlue, "hdrfg": color.FgWhite, }, } + + if len(c.Configuration.BG) > 0 { + colors[color.Level16]["bg"] = ColorStringToBGColor(c.Configuration.BG) + colors[color.Level256]["bg"] = ColorStringToBGColor(c.Configuration.BG) + colors[color.LevelRgb]["bg"] = ColorStringToBGColor(c.Configuration.BG) + } + + if len(c.Configuration.FG) > 0 { + colors[color.Level16]["fg"] = ColorStringToColor(c.Configuration.FG) + colors[color.Level256]["fg"] = ColorStringToColor(c.Configuration.FG) + colors[color.LevelRgb]["fg"] = ColorStringToColor(c.Configuration.FG) + } + + if len(c.Configuration.HighlightBG) > 0 { + colors[color.Level16]["hlbg"] = ColorStringToBGColor(c.Configuration.HighlightBG) + colors[color.Level256]["hlbg"] = ColorStringToBGColor(c.Configuration.HighlightBG) + colors[color.LevelRgb]["hlbg"] = ColorStringToBGColor(c.Configuration.HighlightBG) + } + + if len(c.Configuration.HighlightFG) > 0 { + colors[color.Level16]["hlfg"] = ColorStringToColor(c.Configuration.HighlightFG) + colors[color.Level256]["hlfg"] = ColorStringToColor(c.Configuration.HighlightFG) + colors[color.LevelRgb]["hlfg"] = ColorStringToColor(c.Configuration.HighlightFG) + } + + if len(c.Configuration.NoHighlightBG) > 0 { + colors[color.Level16]["nohlbg"] = ColorStringToBGColor(c.Configuration.NoHighlightBG) + colors[color.Level256]["nohlbg"] = ColorStringToBGColor(c.Configuration.NoHighlightBG) + colors[color.LevelRgb]["nohlbg"] = ColorStringToBGColor(c.Configuration.NoHighlightBG) + } + + if len(c.Configuration.NoHighlightFG) > 0 { + colors[color.Level16]["nohlfg"] = ColorStringToColor(c.Configuration.NoHighlightFG) + colors[color.Level256]["nohlfg"] = ColorStringToColor(c.Configuration.NoHighlightFG) + colors[color.LevelRgb]["nohlfg"] = ColorStringToColor(c.Configuration.NoHighlightFG) + } + + if len(c.Configuration.HighlightHdrBG) > 0 { + colors[color.Level16]["hdrbg"] = ColorStringToBGColor(c.Configuration.HighlightHdrBG) + colors[color.Level256]["hdrbg"] = ColorStringToBGColor(c.Configuration.HighlightHdrBG) + colors[color.LevelRgb]["hdrbg"] = ColorStringToBGColor(c.Configuration.HighlightHdrBG) + } + + if len(c.Configuration.HighlightHdrFG) > 0 { + colors[color.Level16]["hdrfg"] = ColorStringToColor(c.Configuration.HighlightHdrFG) + colors[color.Level256]["hdrfg"] = ColorStringToColor(c.Configuration.HighlightHdrFG) + colors[color.LevelRgb]["hdrfg"] = ColorStringToColor(c.Configuration.HighlightHdrFG) + } + + return colors } // find supported color mode, modifies config based on constants @@ -129,7 +199,8 @@ func (c *Config) DetermineColormode() { color.Disable() } else { level := color.TermColorLevel() - colors := Colors() + colors := c.Colors() + c.ColorStyle = color.New(colors[level]["bg"], colors[level]["fg"]) c.HighlightStyle = color.New(colors[level]["hlbg"], colors[level]["hlfg"]) c.NoHighlightStyle = color.New(colors[level]["nohlbg"], colors[level]["nohlfg"]) @@ -228,3 +299,58 @@ func (c *Config) PreparePattern(pattern string) error { return nil } + +func (c *Config) ParseConfigfile() error { + if path, err := os.Stat(c.Configfile); !os.IsNotExist(err) { + if !path.IsDir() { + configstring, err := os.ReadFile(path.Name()) + if err != nil { + return err + } + + err = hclsimple.Decode( + path.Name(), []byte(configstring), + nil, &c.Configuration, + ) + if err != nil { + log.Fatalf("Failed to load configuration: %s", err) + } + } + } + + return nil +} + +// translate color string to internal color value +func ColorStringToColor(colorname string) color.Color { + for name, color := range color.FgColors { + if name == colorname { + return color + } + } + + for name, color := range color.ExFgColors { + if name == colorname { + return color + } + } + + return color.Normal +} + +// same, for background colors +func ColorStringToBGColor(colorname string) color.Color { + for name, color := range color.BgColors { + if name == colorname { + return color + } + } + + for name, color := range color.ExBgColors { + if name == colorname { + return color + } + } + + return color.Normal +} diff --git a/cmd/root.go b/cmd/root.go index 6557ef3..1edfb43 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -92,6 +92,11 @@ func Execute() { } // Setup + err := conf.ParseConfigfile() + if err != nil { + return err + } + conf.CheckEnv() conf.PrepareModeFlags(modeflag) conf.PrepareSortFlags(sortmode) @@ -99,7 +104,7 @@ func Execute() { conf.ApplyDefaults() // setup lisp env, load plugins etc - err := lib.SetupLisp(&conf) + err = lib.SetupLisp(&conf) if err != nil { return err } @@ -146,6 +151,9 @@ func Execute() { // lisp options rootCmd.PersistentFlags().StringVarP(&conf.LispLoadPath, "load-path", "l", cfg.DefaultLoadPath, "Load path for lisp plugins (expects *.zy files)") + // config file + rootCmd.PersistentFlags().StringVarP(&conf.Configfile, "config", "f", cfg.DefaultConfigfile, "config file (default: ~/.config/tablizer/config)") + rootCmd.SetUsageTemplate(strings.TrimSpace(usage) + "\n") err := rootCmd.Execute() diff --git a/cmd/tablizer.go b/cmd/tablizer.go index 8811831..5886c0e 100644 --- a/cmd/tablizer.go +++ b/cmd/tablizer.go @@ -36,6 +36,7 @@ SYNOPSIS Other Flags: --completion Generate the autocompletion script for + -f, --config Configuration file (default: ~/.config/tablizer/config) -d, --debug Enable debugging -h, --help help for tablizer -m, --man Display manual page @@ -328,6 +329,7 @@ Sort Mode Flags (mutually exclusive): Other Flags: --completion Generate the autocompletion script for + -f, --config Configuration file (default: ~/.config/tablizer/config) -d, --debug Enable debugging -h, --help help for tablizer -m, --man Display manual page diff --git a/config.hcl b/config.hcl new file mode 100644 index 0000000..acd41e7 --- /dev/null +++ b/config.hcl @@ -0,0 +1,12 @@ +# supported colors: +# black, blue, cyan, darkGray, default, green, lightBlue, lightCyan, +# lightGreen, lightMagenta, lightRed, lightWhite, lightYellow, +# magenta, red, white, yellow +BG = "lightGreen" +FG = "white" +HighlightBG = "lightGreen" +HighlightFG = "white" +NoHighlightBG = "white" +NoHighlightFG = "lightGreen" +HighlightHdrBG = "red" +HighlightHdrFG = "white" diff --git a/go.mod b/go.mod index c59f01c..27df626 100644 --- a/go.mod +++ b/go.mod @@ -5,24 +5,40 @@ go 1.18 require ( github.com/alecthomas/repr v0.1.1 github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de + github.com/glycerine/zygomys v5.1.2+incompatible github.com/gookit/color v1.5.2 + github.com/hashicorp/hcl/v2 v2.19.1 + github.com/lithammer/fuzzysearch v1.1.7 github.com/olekukonko/tablewriter v0.0.5 github.com/spf13/cobra v1.6.1 gopkg.in/yaml.v3 v3.0.1 ) require ( + github.com/agext/levenshtein v1.2.1 // indirect + github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/glycerine/blake2b v0.0.0-20151022103502-3c8c640cd7be // indirect + github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 // indirect github.com/glycerine/greenpack v5.1.1+incompatible // indirect github.com/glycerine/liner v0.0.0-20160121172638-72909af234e0 // indirect - github.com/glycerine/zygomys v5.1.2+incompatible // indirect - github.com/lithammer/fuzzysearch v1.1.7 // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/gopherjs/gopherjs v1.17.2 // indirect + github.com/jtolds/gls v4.20.0+incompatible // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/philhofer/fwd v1.1.2 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636 // indirect github.com/shurcooL/go-goon v1.0.0 // indirect + github.com/stretchr/testify v1.8.4 // indirect github.com/tinylib/msgp v1.1.8 // indirect github.com/ugorji/go/codec v1.2.11 // indirect - golang.org/x/text v0.8.0 // indirect + github.com/zclconf/go-cty v1.13.0 // indirect + golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect + golang.org/x/text v0.13.0 // indirect + gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect ) require ( @@ -34,5 +50,5 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect - golang.org/x/sys v0.5.0 // indirect + golang.org/x/sys v0.12.0 // indirect ) diff --git a/go.sum b/go.sum index 9437625..6527d53 100644 --- a/go.sum +++ b/go.sum @@ -1,40 +1,71 @@ +github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= +github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/alecthomas/repr v0.1.1 h1:87P60cSmareLAxMc4Hro0r2RBY4ROm0dYwkJNpS4pPs= github.com/alecthomas/repr v0.1.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/glycerine/blake2b v0.0.0-20151022103502-3c8c640cd7be h1:XBJdPGgA3qqhW+p9CANCAVdF7ZIXdu3pZAkypMkKAjE= github.com/glycerine/blake2b v0.0.0-20151022103502-3c8c640cd7be/go.mod h1:OSCrScrFAjcBObrulk6BEQlytA462OkG1UGB5NYj9kE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/glycerine/greenpack v5.1.1+incompatible h1:fDr9i6MkSGZmAy4VXPfJhW+SyK2/LNnzIp5nHyDiaIM= github.com/glycerine/greenpack v5.1.1+incompatible/go.mod h1:us0jVISAESGjsEuLlAfCd5nkZm6W6WQF18HPuOecIg4= github.com/glycerine/liner v0.0.0-20160121172638-72909af234e0 h1:4ZegphJXBTc4uFQ08UVoWYmQXorGa+ipXetUj83sMBc= github.com/glycerine/liner v0.0.0-20160121172638-72909af234e0/go.mod h1:AqJLs6UeoC65dnHxyCQ6MO31P5STpjcmgaANAU+No8Q= github.com/glycerine/zygomys v5.1.2+incompatible h1:jmcdmA3XPxgfOunAXFpipE9LQoUL6eX6d2mhYyjV4GE= github.com/glycerine/zygomys v5.1.2+incompatible/go.mod h1:i3SPKZpmy9dwF/3iWrXJ/ZLyzZucegwypwOmqRkUUaQ= +github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/gookit/color v1.5.2 h1:uLnfXcaFjlrDnQDT+NCBcfhrXqYTx/rcCa6xn01Y8yI= github.com/gookit/color v1.5.2/go.mod h1:w8h4bGiHeeBpvQVePTutdbERIUf3oJE5lZ8HM0UgXyg= +github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= +github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= +github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= +github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/lithammer/fuzzysearch v1.1.7 h1:q8rZNmBIUkqxsxb/IlwsXVbCoPIH/0juxjFHY0UIwhU= github.com/lithammer/fuzzysearch v1.1.7/go.mod h1:ZhIlfRGxnD8qa9car/yplC6GmnM14CS07BYAKJJBK2I= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636 h1:aSISeOcal5irEhJd1M+IrApc0PdcN7e7Aj4yuEnOrfQ= github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v1.0.0 h1:BCQPvxGkHHJ4WpBO4m/9FXbITVIsvAm/T66cCcCGI7E= @@ -47,8 +78,9 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= @@ -57,9 +89,12 @@ github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1z github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zclconf/go-cty v1.13.0 h1:It5dfKTTZHe9aeppbNOda3mN7Ag7sg6QkBNm6TkyFa0= +github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561 h1:MDc5xs78ZrZr3HMQugiXOAkSZtfTpbJLDr/lwfgO53E= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -77,11 +112,10 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= @@ -91,16 +125,18 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tablizer.1 b/tablizer.1 index d60e3f0..c8820a2 100644 --- a/tablizer.1 +++ b/tablizer.1 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "TABLIZER 1" -.TH TABLIZER 1 "2023-11-21" "1" "User Commands" +.TH TABLIZER 1 "2023-11-22" "1" "User Commands" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -174,6 +174,7 @@ tablizer \- Manipulate tabular output of other programs \& \& Other Flags: \& \-\-completion Generate the autocompletion script for +\& \-f, \-\-config Configuration file (default: ~/.config/tablizer/config) \& \-d, \-\-debug Enable debugging \& \-h, \-\-help help for tablizer \& \-m, \-\-man Display manual page diff --git a/tablizer.pod b/tablizer.pod index 7c72985..8bfcfde 100644 --- a/tablizer.pod +++ b/tablizer.pod @@ -35,6 +35,7 @@ tablizer - Manipulate tabular output of other programs Other Flags: --completion Generate the autocompletion script for + -f, --config Configuration file (default: ~/.config/tablizer/config) -d, --debug Enable debugging -h, --help help for tablizer -m, --man Display manual page @@ -294,6 +295,37 @@ and source this file from your PowerShell profile. =back +=head1 CONFIGURATION AND COLORS + +YOu can put certain configuration values into a configuration file in +HCL format. By default tablizer looks for +C<$HOME/.config/tablizer/config>, but you can provide one using the +parameter C<-f>. + +In the configuration the following variables can be defined: + + BG = "lightGreen" + FG = "white" + HighlightBG = "lightGreen" + HighlightFG = "white" + NoHighlightBG = "white" + NoHighlightFG = "lightGreen" + HighlightHdrBG = "red" + HighlightHdrFG = "white" + +The following color definitions are available: + +black, blue, cyan, darkGray, default, green, lightBlue, lightCyan, +lightGreen, lightMagenta, lightRed, lightWhite, lightYellow, +magenta, red, white, yellow + +The Variables B and B are being used to highlight matches. The +other *FG and *BG variables are for colored table output (enabled with +the C<-L> parameter). + +Colorization can be turned off completely either by setting the +parameter C<-N> or the environment variable B to a true value. + =head1 BUGS In order to report a bug, unexpected behavior, feature requests From 76b98fb8ad8e420fe250989402d71e7fbe3780f5 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Wed, 22 Nov 2023 13:48:32 +0100 Subject: [PATCH 5/8] upd mods --- go.mod | 34 ++++++++++++-------------------- go.sum | 62 +++++++++++++++++++++------------------------------------- 2 files changed, 34 insertions(+), 62 deletions(-) diff --git a/go.mod b/go.mod index 27df626..cebaa78 100644 --- a/go.mod +++ b/go.mod @@ -14,41 +14,31 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) +require github.com/zclconf/go-cty v1.13.2 // indirect + require ( github.com/agext/levenshtein v1.2.1 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/glycerine/blake2b v0.0.0-20151022103502-3c8c640cd7be // indirect github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 // indirect github.com/glycerine/greenpack v5.1.1+incompatible // indirect github.com/glycerine/liner v0.0.0-20160121172638-72909af234e0 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-cmp v0.5.6 // indirect github.com/gopherjs/gopherjs v1.17.2 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jtolds/gls v4.20.0+incompatible // indirect - github.com/kr/pretty v0.3.1 // indirect + github.com/mattn/go-runewidth v0.0.10 // indirect github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/philhofer/fwd v1.1.2 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/rivo/uniseg v0.1.0 // indirect github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636 // indirect github.com/shurcooL/go-goon v1.0.0 // indirect - github.com/stretchr/testify v1.8.4 // indirect - github.com/tinylib/msgp v1.1.8 // indirect - github.com/ugorji/go/codec v1.2.11 // indirect - github.com/zclconf/go-cty v1.13.0 // indirect - golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect - golang.org/x/text v0.13.0 // indirect - gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect -) - -require ( - github.com/inconshreveable/mousetrap v1.0.1 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect - - // force release. > 0.4. doesnt build everywhere, see: - // https://github.com/TLINDEN/tablizer/actions/runs/3396457307/jobs/5647544615 - github.com/rivo/uniseg v0.2.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect - golang.org/x/sys v0.12.0 // indirect + github.com/tinylib/msgp v1.1.9 // indirect + github.com/ugorji/go/codec v1.2.11 // indirect + github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.11.0 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect ) diff --git a/go.sum b/go.sum index 6527d53..6cfa483 100644 --- a/go.sum +++ b/go.sum @@ -9,11 +9,9 @@ github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmms github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/glycerine/blake2b v0.0.0-20151022103502-3c8c640cd7be h1:XBJdPGgA3qqhW+p9CANCAVdF7ZIXdu3pZAkypMkKAjE= github.com/glycerine/blake2b v0.0.0-20151022103502-3c8c640cd7be/go.mod h1:OSCrScrFAjcBObrulk6BEQlytA462OkG1UGB5NYj9kE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= @@ -25,8 +23,8 @@ github.com/glycerine/liner v0.0.0-20160121172638-72909af234e0/go.mod h1:AqJLs6Ue github.com/glycerine/zygomys v5.1.2+incompatible h1:jmcdmA3XPxgfOunAXFpipE9LQoUL6eX6d2mhYyjV4GE= github.com/glycerine/zygomys v5.1.2+incompatible/go.mod h1:i3SPKZpmy9dwF/3iWrXJ/ZLyzZucegwypwOmqRkUUaQ= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/gookit/color v1.5.2 h1:uLnfXcaFjlrDnQDT+NCBcfhrXqYTx/rcCa6xn01Y8yI= github.com/gookit/color v1.5.2/go.mod h1:w8h4bGiHeeBpvQVePTutdbERIUf3oJE5lZ8HM0UgXyg= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= @@ -37,32 +35,24 @@ github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7P github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/lithammer/fuzzysearch v1.1.7 h1:q8rZNmBIUkqxsxb/IlwsXVbCoPIH/0juxjFHY0UIwhU= github.com/lithammer/fuzzysearch v1.1.7/go.mod h1:ZhIlfRGxnD8qa9car/yplC6GmnM14CS07BYAKJJBK2I= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= @@ -78,30 +68,24 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= -github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= +github.com/tinylib/msgp v1.1.9 h1:SHf3yoO2sGA0veCJeCBYLHuttAVFHGm2RHgNodW7wQU= +github.com/tinylib/msgp v1.1.9/go.mod h1:BCXGB54lDD8qUEPmiG0cQQUANC4IUQyB2ItS2UDlO/k= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8= github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= -github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= -github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.13.0 h1:It5dfKTTZHe9aeppbNOda3mN7Ag7sg6QkBNm6TkyFa0= -github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= +github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= +github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -112,31 +96,29 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 3632de10d7c97b35d63590933d35404083fcbc58 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Wed, 22 Nov 2023 13:57:57 +0100 Subject: [PATCH 6/8] try to fix linter --- .github/workflows/ci.yaml | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c1e3643..8804f61 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -34,25 +34,5 @@ jobs: - uses: actions/checkout@v3 - name: golangci-lint uses: golangci/golangci-lint-action@v3 - #with: - # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version - # version: v1.29 - - # Optional: working directory, useful for monorepos - # working-directory: somedir - - # Optional: golangci-lint command line arguments. - # args: --issues-exit-code=0 - - # Optional: show only new issues if it's a pull request. The default value is `false`. - # only-new-issues: true - - # Optional: if set to true then the all caching functionality will be complete disabled, - # takes precedence over all other caching options. - # skip-cache: true - - # Optional: if set to true then the action don't cache or restore ~/go/pkg. - # skip-pkg-cache: true - - # Optional: if set to true then the action don't cache or restore ~/.cache/go-build. - # skip-build-cache: true + with: + skip-cache: true From ddfbecaa353c7075d369d18ae18dd0b67b380ddc Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Wed, 22 Nov 2023 14:08:36 +0100 Subject: [PATCH 7/8] +docs, try linter v1.18 --- .github/workflows/ci.yaml | 2 +- cmd/tablizer.go | 30 ++++++++++++++++++++++++++++++ go.mod | 3 +-- go.sum | 4 ++-- tablizer.1 | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8804f61..4aed93d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,7 +30,7 @@ jobs: steps: - uses: actions/setup-go@v3 with: - go-version: 1.17 + go-version: 1.18 - uses: actions/checkout@v3 - name: golangci-lint uses: golangci/golangci-lint-action@v3 diff --git a/cmd/tablizer.go b/cmd/tablizer.go index 5886c0e..e49dc17 100644 --- a/cmd/tablizer.go +++ b/cmd/tablizer.go @@ -259,6 +259,36 @@ DESCRIPTION and source this file from your PowerShell profile. +CONFIGURATION AND COLORS + YOu can put certain configuration values into a configuration file in + HCL format. By default tablizer looks for + "$HOME/.config/tablizer/config", but you can provide one using the + parameter "-f". + + In the configuration the following variables can be defined: + + BG = "lightGreen" + FG = "white" + HighlightBG = "lightGreen" + HighlightFG = "white" + NoHighlightBG = "white" + NoHighlightFG = "lightGreen" + HighlightHdrBG = "red" + HighlightHdrFG = "white" + + The following color definitions are available: + + black, blue, cyan, darkGray, default, green, lightBlue, lightCyan, + lightGreen, lightMagenta, lightRed, lightWhite, lightYellow, magenta, + red, white, yellow + + The Variables FG and BG are being used to highlight matches. The other + *FG and *BG variables are for colored table output (enabled with the + "-L" parameter). + + Colorization can be turned off completely either by setting the + parameter "-N" or the environment variable NO_COLOR to a true value. + BUGS In order to report a bug, unexpected behavior, feature requests or to submit a patch, please open an issue on github: diff --git a/go.mod b/go.mod index cebaa78..e87a3a8 100644 --- a/go.mod +++ b/go.mod @@ -14,8 +14,6 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) -require github.com/zclconf/go-cty v1.13.2 // indirect - require ( github.com/agext/levenshtein v1.2.1 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect @@ -38,6 +36,7 @@ require ( github.com/tinylib/msgp v1.1.9 // indirect github.com/ugorji/go/codec v1.2.11 // indirect github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect + github.com/zclconf/go-cty v1.13.0 // indirect golang.org/x/sys v0.13.0 // indirect golang.org/x/text v0.11.0 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect diff --git a/go.sum b/go.sum index 6cfa483..79ff9d7 100644 --- a/go.sum +++ b/go.sum @@ -77,8 +77,8 @@ github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZ github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8= github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= -github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= +github.com/zclconf/go-cty v1.13.0 h1:It5dfKTTZHe9aeppbNOda3mN7Ag7sg6QkBNm6TkyFa0= +github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= diff --git a/tablizer.1 b/tablizer.1 index c8820a2..2d8285c 100644 --- a/tablizer.1 +++ b/tablizer.1 @@ -446,6 +446,38 @@ To load completions for every new session, run: .Ve .Sp and source this file from your PowerShell profile. +.SH "CONFIGURATION AND COLORS" +.IX Header "CONFIGURATION AND COLORS" +YOu can put certain configuration values into a configuration file in +\&\s-1HCL\s0 format. By default tablizer looks for +\&\f(CW\*(C`$HOME/.config/tablizer/config\*(C'\fR, but you can provide one using the +parameter \f(CW\*(C`\-f\*(C'\fR. +.PP +In the configuration the following variables can be defined: +.PP +.Vb 8 +\& BG = "lightGreen" +\& FG = "white" +\& HighlightBG = "lightGreen" +\& HighlightFG = "white" +\& NoHighlightBG = "white" +\& NoHighlightFG = "lightGreen" +\& HighlightHdrBG = "red" +\& HighlightHdrFG = "white" +.Ve +.PP +The following color definitions are available: +.PP +black, blue, cyan, darkGray, default, green, lightBlue, lightCyan, +lightGreen, lightMagenta, lightRed, lightWhite, lightYellow, +magenta, red, white, yellow +.PP +The Variables \fB\s-1FG\s0\fR and \fB\s-1BG\s0\fR are being used to highlight matches. The +other *FG and *BG variables are for colored table output (enabled with +the \f(CW\*(C`\-L\*(C'\fR parameter). +.PP +Colorization can be turned off completely either by setting the +parameter \f(CW\*(C`\-N\*(C'\fR or the environment variable \fB\s-1NO_COLOR\s0\fR to a true value. .SH "BUGS" .IX Header "BUGS" In order to report a bug, unexpected behavior, feature requests From 0f224579618aa0409e0ed77b49b04b324b791447 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Wed, 22 Nov 2023 14:09:49 +0100 Subject: [PATCH 8/8] remove go 1.17 support --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4aed93d..75e6052 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -4,7 +4,7 @@ jobs: build: strategy: matrix: - version: [1.17, 1.18, 1.19] + version: [1.18, 1.19] os: [ubuntu-latest, windows-latest, macos-latest] name: Build runs-on: ${{ matrix.os }}