github.com/orange-cloudfoundry/cli@v7.1.0+incompatible/command/plugin/shared/progress_bar_proxy_reader.go (about) 1 package shared 2 3 import ( 4 "io" 5 6 pb "gopkg.in/cheggaaa/pb.v1" 7 ) 8 9 // ProgressBarProxyReader wraps a progress bar in a ProxyReader interface. 10 type ProgressBarProxyReader struct { 11 writer io.Writer 12 bar *pb.ProgressBar 13 } 14 15 func (p ProgressBarProxyReader) Wrap(reader io.Reader) io.ReadCloser { 16 return p.bar.NewProxyReader(reader) 17 } 18 19 func (p *ProgressBarProxyReader) Start(size int64) { 20 p.bar = pb.New(int(size)).SetUnits(pb.U_BYTES) 21 p.bar.Output = p.writer 22 p.bar.Start() 23 } 24 25 func (p ProgressBarProxyReader) Finish() { 26 p.bar.Finish() 27 } 28 29 func NewProgressBarProxyReader(writer io.Writer) *ProgressBarProxyReader { 30 return &ProgressBarProxyReader{writer: writer} 31 }