| // +build !appengine,!js,windows |
| |
| package logrus |
| |
| import ( |
| "io" |
| "os" |
| "syscall" |
| |
| sequences "github.com/konsorten/go-windows-terminal-sequences" |
| ) |
| |
| func initTerminal(w io.Writer) { |
| switch v := w.(type) { |
| case *os.File: |
| sequences.EnableVirtualTerminalProcessing(syscall.Handle(v.Fd()), true) |
| } |
| } |
| |
| func checkIfTerminal(w io.Writer) bool { |
| var ret bool |
| switch v := w.(type) { |
| case *os.File: |
| var mode uint32 |
| err := syscall.GetConsoleMode(syscall.Handle(v.Fd()), &mode) |
| ret = (err == nil) |
| default: |
| ret = false |
| } |
| if ret { |
| initTerminal(w) |
| } |
| return ret |
| } |