Created
May 21, 2019 05:03
-
-
Save kayrus/66e30b750f9511ac1195b6b992ef19eb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package env | |
import ( | |
"os" | |
"syscall" | |
"golang.org/x/sys/windows" | |
"golang.org/x/text/encoding/charmap" | |
) | |
func Get(s string) string { | |
var st uint32 | |
env := os.Getenv(s) | |
if windows.GetConsoleMode(windows.Handle(syscall.Stdin), &st) == nil || | |
windows.GetConsoleMode(windows.Handle(syscall.Stdout), &st) == nil || | |
windows.GetConsoleMode(windows.Handle(syscall.Stderr), &st) == nil { | |
// detect windows console, should be skipped in cygwin environment | |
var cm charmap.Charmap | |
switch windows.GetACP() { | |
case 37: | |
cm = *charmap.CodePage037 | |
case 1047: | |
cm = *charmap.CodePage1047 | |
case 1140: | |
cm = *charmap.CodePage1140 | |
case 437: | |
cm = *charmap.CodePage437 | |
case 850: | |
cm = *charmap.CodePage850 | |
case 852: | |
cm = *charmap.CodePage852 | |
case 855: | |
cm = *charmap.CodePage855 | |
case 858: | |
cm = *charmap.CodePage858 | |
case 860: | |
cm = *charmap.CodePage860 | |
case 862: | |
cm = *charmap.CodePage862 | |
case 863: | |
cm = *charmap.CodePage863 | |
case 865: | |
cm = *charmap.CodePage865 | |
case 866: | |
cm = *charmap.CodePage866 | |
case 28591: | |
cm = *charmap.ISO8859_1 | |
case 28592: | |
cm = *charmap.ISO8859_2 | |
case 28593: | |
cm = *charmap.ISO8859_3 | |
case 28594: | |
cm = *charmap.ISO8859_4 | |
case 28595: | |
cm = *charmap.ISO8859_5 | |
case 28596: | |
cm = *charmap.ISO8859_6 | |
case 28597: | |
cm = *charmap.ISO8859_7 | |
case 28598: | |
cm = *charmap.ISO8859_8 | |
case 28599: | |
cm = *charmap.ISO8859_9 | |
case 28600: | |
cm = *charmap.ISO8859_10 | |
case 28603: | |
cm = *charmap.ISO8859_13 | |
case 28604: | |
cm = *charmap.ISO8859_14 | |
case 28605: | |
cm = *charmap.ISO8859_15 | |
case 28606: | |
cm = *charmap.ISO8859_16 | |
case 20866: | |
cm = *charmap.KOI8R | |
case 21866: | |
cm = *charmap.KOI8U | |
case 1250: | |
cm = *charmap.Windows1250 | |
case 1251: | |
cm = *charmap.Windows1251 | |
case 1252: | |
cm = *charmap.Windows1252 | |
case 1253: | |
cm = *charmap.Windows1253 | |
case 1254: | |
cm = *charmap.Windows1254 | |
case 1255: | |
cm = *charmap.Windows1255 | |
case 1256: | |
cm = *charmap.Windows1256 | |
case 1257: | |
cm = *charmap.Windows1257 | |
case 1258: | |
cm = *charmap.Windows1258 | |
case 874: | |
cm = *charmap.Windows874 | |
default: | |
return env | |
} | |
if v, err := cm.NewEncoder().String(env); err == nil { | |
return v | |
} | |
} | |
return env | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment