extract multiwritecloser
1 file changed, 34 insertions(+), 0 deletions(-)
changed files
A internal/multibuf/writecloser.go
@@ -0,0 +1,34 @@ +package multibuf + +import ( + "io" +) + +type WriteCloser struct { + writers []io.WriteCloser + io.Writer +} + +func NewWriteCloser(writers ...io.WriteCloser) *WriteCloser { + ws := make([]io.Writer, len(writers)) + for i, w := range writers { + ws[i] = io.Writer(w) + } + + return &WriteCloser{ + writers: writers, + Writer: io.MultiWriter(ws...), + } +} + +func (mw *WriteCloser) Close() error { + var lastErr error + for _, w := range mw.writers { + err := w.Close() + if err != nil { + lastErr = err + } + } + + return lastErr +}