// Copyright 2016 Canonical Ltd. // Licensed under the LGPLv3, see LICENCE file for details. package ansiterm import ( "io" "os" "github.com/mattn/go-colorable" "github.com/mattn/go-isatty" ) // colorEnabledWriter returns a writer that can handle the ansi color codes // and true if the writer passed in is a terminal capable of color. If the // TERM environment variable is set to "dumb", the terminal is not considered // color capable. func colorEnabledWriter(w io.Writer) (io.Writer, bool) { f, ok := w.(*os.File) if !ok { return w, false } // Check the TERM environment variable specifically // to check for "dumb" terminals. if os.Getenv("TERM") == "dumb" { return w, false } if !isatty.IsTerminal(f.Fd()) { return w, false } return colorable.NewColorable(f), true }