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 }