Merge pull request #11648 from ahmetalpbalkan/win-cli/ansi-emulation-check

Disable ANSI emulation in certain windows shells
This commit is contained in:
Jessie Frazelle 2015-03-23 12:55:31 -07:00
commit b094677559
1 changed files with 20 additions and 1 deletions

View File

@ -3,6 +3,7 @@ package term
import (
"io"
"os"
"github.com/docker/docker/pkg/term/winconsole"
)
@ -114,5 +115,23 @@ func GetFdInfo(in interface{}) (uintptr, bool) {
}
func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) {
return winconsole.StdStreams()
var shouldEmulateANSI bool
switch {
case os.Getenv("ConEmuANSI") == "ON":
// ConEmu shell, ansi emulated by default and ConEmu does an extensively
// good emulation.
shouldEmulateANSI = false
case os.Getenv("MSYSTEM") != "":
// MSYS (mingw) cannot fully emulate well and still shows escape characters
// mostly because it's still running on cmd.exe window.
shouldEmulateANSI = true
default:
shouldEmulateANSI = true
}
if shouldEmulateANSI {
return winconsole.StdStreams()
}
return os.Stdin, os.Stdout, os.Stderr
}