mirror of
				https://github.com/cheat/cheat.git
				synced 2025-11-04 07:45:28 +01:00 
			
		
		
		
	fix: colorization errors
- Corrects an error with `--search`. Previously, `--search` was not aware of whether it was outputted to a TTY, and would apply colorization at all times. This resulted in unwanted behavior when, for example, piping search results into a paginator. - Corrects an error with `--color`. Previously, `--color` would be ignored if output was being written to a non-TTY. This made it impossible, for example, to `cheat tar --color | less -R`, as colorization would always be stripped. The behavior of `--color` has been modified such that it now behaves similarly to `--color=always` in other applications.
This commit is contained in:
		@@ -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 <phrase>
 | 
			
		||||
		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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								internal/config/color.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								internal/config/color.go
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user