From 48002435730cf94c39d8fb11389e0b8f14075ca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Suszy=C5=84ski?= Date: Tue, 28 Feb 2023 13:10:58 +0100 Subject: [PATCH] A check for io.Writer --- writter.go | 23 +++++++++++++++++++++++ writter_test.go | 18 ++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 writter.go create mode 100644 writter_test.go diff --git a/writter.go b/writter.go new file mode 100644 index 0000000..ab8799f --- /dev/null +++ b/writter.go @@ -0,0 +1,23 @@ +package isatty + +import "io" + +// IsWriterTerminal return true if the writer is terminal. +func IsWriterTerminal(w io.Writer) bool { + if f, ok := w.(filelike); ok { + return IsTerminal(f.Fd()) + } + return false +} + +// IsWriterCygwinTerminal return true if the writer is a cygwin or msys2 terminal. +func IsWriterCygwinTerminal(w io.Writer) bool { + if f, ok := w.(filelike); ok { + return IsCygwinTerminal(f.Fd()) + } + return false +} + +type filelike interface { + Fd() uintptr +} diff --git a/writter_test.go b/writter_test.go new file mode 100644 index 0000000..a6b0a89 --- /dev/null +++ b/writter_test.go @@ -0,0 +1,18 @@ +package isatty_test + +import ( + "os" + "testing" + + "github.com/mattn/go-isatty" +) + +func TestIsWriterTerminal(t *testing.T) { + // test for non-panic + isatty.IsWriterTerminal(os.Stdout) +} + +func TestIsWriterCygwinTerminal(t *testing.T) { + // test for non-panic + isatty.IsWriterCygwinTerminal(os.Stdout) +}