output_windows.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // +build windows
  2. package prompt
  3. import (
  4. "io"
  5. colorable "github.com/mattn/go-colorable"
  6. )
  7. // WindowsWriter is a ConsoleWriter implementation for Win32 console.
  8. // Output is converted from VT100 escape sequences by mattn/go-colorable.
  9. type WindowsWriter struct {
  10. VT100Writer
  11. out io.Writer
  12. }
  13. // Flush to flush buffer
  14. func (w *WindowsWriter) Flush() error {
  15. _, err := w.out.Write(w.buffer)
  16. if err != nil {
  17. return err
  18. }
  19. w.buffer = []byte{}
  20. return nil
  21. }
  22. var _ ConsoleWriter = &WindowsWriter{}
  23. var (
  24. // NewStandardOutputWriter is Deprecated: Please use NewStdoutWriter
  25. NewStandardOutputWriter = NewStdoutWriter
  26. )
  27. // NewStdoutWriter returns ConsoleWriter object to write to stdout.
  28. // This generates win32 control sequences.
  29. func NewStdoutWriter() ConsoleWriter {
  30. return &WindowsWriter{
  31. out: colorable.NewColorableStdout(),
  32. }
  33. }
  34. // NewStderrWriter returns ConsoleWriter object to write to stderr.
  35. // This generates win32 control sequences.
  36. func NewStderrWriter() ConsoleWriter {
  37. return &WindowsWriter{
  38. out: colorable.NewColorableStderr(),
  39. }
  40. }