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
}