diff --git a/cmd/cheat/cmd_search.go b/cmd/cheat/cmd_search.go index ebc53e1..5c64da9 100644 --- a/cmd/cheat/cmd_search.go +++ b/cmd/cheat/cmd_search.go @@ -38,12 +38,6 @@ func cmdSearch(opts map[string]interface{}, conf config.Config) { // sort the cheatsheets alphabetically, and search for matches for _, sheet := range sheets.Sort(consolidated) { - // colorize output? - colorize := false - if conf.Colorize == true || opts["--colorize"] == true { - colorize = true - } - // assume that we want to perform a case-insensitive search for pattern := "(?i)" + phrase @@ -60,7 +54,7 @@ func cmdSearch(opts map[string]interface{}, conf config.Config) { } // search the sheet - matches := sheet.Search(reg, colorize) + matches := sheet.Search(reg, conf.Color(opts)) // display the results if len(matches) > 0 { diff --git a/cmd/cheat/cmd_view.go b/cmd/cheat/cmd_view.go index 9d9997f..09a41dc 100644 --- a/cmd/cheat/cmd_view.go +++ b/cmd/cheat/cmd_view.go @@ -6,7 +6,6 @@ import ( "strings" "github.com/alecthomas/chroma/quick" - "github.com/mattn/go-isatty" "github.com/cheat/cheat/internal/config" "github.com/cheat/cheat/internal/sheets" @@ -44,20 +43,7 @@ func cmdView(opts map[string]interface{}, conf config.Config) { os.Exit(0) } - // apply colorization if so configured ... - colorize := conf.Colorize - - // ... or if --colorized were passed ... - if opts["--colorize"] == true { - colorize = true - } - - // ... unless we're outputting to a non-TTY - if !isatty.IsTerminal(os.Stdout.Fd()) && !isatty.IsCygwinTerminal(os.Stdout.Fd()) { - colorize = false - } - - if !colorize { + if !conf.Color(opts) { fmt.Print(sheet.Text) os.Exit(0) } diff --git a/internal/config/color.go b/internal/config/color.go new file mode 100644 index 0000000..ad16b3b --- /dev/null +++ b/internal/config/color.go @@ -0,0 +1,26 @@ +package config + +import ( + "os" + + "github.com/mattn/go-isatty" +) + +// Color indicates whether colorization should be applied to the output +func (c *Config) Color(opts map[string]interface{}) bool { + + // default to the colorization specified in the configs... + colorize := c.Colorize + + // ... however, only apply colorization if we're writing to a tty... + if !isatty.IsTerminal(os.Stdout.Fd()) && !isatty.IsCygwinTerminal(os.Stdout.Fd()) { + colorize = false + } + + // ... *unless* the --colorize flag was passed + if opts["--colorize"] == true { + colorize = true + } + + return colorize +}