github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/docker/readcloser.go (about)

     1  package docker
     2  
     3  import "io"
     4  
     5  type readCloserWrapper struct {
     6  	wrapped  io.ReadCloser
     7  	tearDown func() error
     8  }
     9  
    10  var _ io.ReadCloser = readCloserWrapper{}
    11  
    12  func WrapReadCloserWithTearDown(wrapped io.ReadCloser, tearDown func() error) readCloserWrapper {
    13  	return readCloserWrapper{
    14  		wrapped:  wrapped,
    15  		tearDown: tearDown,
    16  	}
    17  }
    18  
    19  func (w readCloserWrapper) Read(b []byte) (int, error) {
    20  	return w.wrapped.Read(b)
    21  }
    22  
    23  func (w readCloserWrapper) Close() error {
    24  	err1 := w.wrapped.Close()
    25  	err2 := w.tearDown()
    26  	if err1 != nil {
    27  		return err1
    28  	}
    29  	return err2
    30  }