Merge pull request #126 from github/cygwin-color
Fix color output to Git Bash
This commit is contained in:
commit
9a3b032ffa
1 changed files with 28 additions and 1 deletions
|
|
@ -9,6 +9,18 @@ import (
|
|||
"github.com/mgutz/ansi"
|
||||
)
|
||||
|
||||
var _isStdoutTerminal = false
|
||||
var checkedTerminal = false
|
||||
|
||||
func isStdoutTerminal() bool {
|
||||
if !checkedTerminal {
|
||||
fd := os.Stdout.Fd()
|
||||
_isStdoutTerminal = isatty.IsTerminal(fd) || isatty.IsCygwinTerminal(fd)
|
||||
checkedTerminal = true
|
||||
}
|
||||
return _isStdoutTerminal
|
||||
}
|
||||
|
||||
// NewColorable returns an output stream that handles ANSI color sequences on Windows
|
||||
func NewColorable(f *os.File) io.Writer {
|
||||
return colorable.NewColorable(f)
|
||||
|
|
@ -17,18 +29,33 @@ func NewColorable(f *os.File) io.Writer {
|
|||
func makeColorFunc(color string) func(string) string {
|
||||
cf := ansi.ColorFunc(color)
|
||||
return func(arg string) string {
|
||||
if isatty.IsTerminal(os.Stdout.Fd()) {
|
||||
if isStdoutTerminal() {
|
||||
return cf(arg)
|
||||
}
|
||||
return arg
|
||||
}
|
||||
}
|
||||
|
||||
// Magenta outputs ANSI color if stdout is a tty
|
||||
var Magenta = makeColorFunc("magenta")
|
||||
|
||||
// Cyan outputs ANSI color if stdout is a tty
|
||||
var Cyan = makeColorFunc("cyan")
|
||||
|
||||
// Red outputs ANSI color if stdout is a tty
|
||||
var Red = makeColorFunc("red")
|
||||
|
||||
// Yellow outputs ANSI color if stdout is a tty
|
||||
var Yellow = makeColorFunc("yellow")
|
||||
|
||||
// Blue outputs ANSI color if stdout is a tty
|
||||
var Blue = makeColorFunc("blue")
|
||||
|
||||
// Green outputs ANSI color if stdout is a tty
|
||||
var Green = makeColorFunc("green")
|
||||
|
||||
// Gray outputs ANSI color if stdout is a tty
|
||||
var Gray = makeColorFunc("black+h")
|
||||
|
||||
// Bold outputs ANSI color if stdout is a tty
|
||||
var Bold = makeColorFunc("default+b")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue