github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/interact/errwriter.go (about)

     1  // Copyright 2018 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package interact
     5  
     6  import (
     7  	"io"
     8  
     9  	"github.com/juju/ansiterm"
    10  )
    11  
    12  // NewErrWriter wraps w in a type that will cause all writes to be written as
    13  // ansi terminal BrightRed.
    14  func NewErrWriter(w io.Writer) io.Writer {
    15  	return errWriter{ansiterm.NewWriter(w)}
    16  }
    17  
    18  // errWriter is a little type that ensures that anything written to it is
    19  // written in BrightRed.
    20  type errWriter struct {
    21  	w *ansiterm.Writer
    22  }
    23  
    24  func (w errWriter) Write(b []byte) (n int, err error) {
    25  	w.w.SetForeground(ansiterm.BrightRed)
    26  	defer w.w.Reset()
    27  	return w.w.Write(b)
    28  }