func progressBarForReader(out io.Writer, r io.Reader, l int64) (*pb.ProgressBar, io.Reader) { // setup bar reader // TODO: get total length of files bar := pb.New64(l).SetUnits(pb.U_BYTES) bar.Output = out // the progress bar lib doesn't give us a way to get the width of the output, // so as a hack we just use a callback to measure the output, then git rid of it bar.Callback = func(line string) { terminalWidth := len(line) bar.Callback = nil log.Infof("terminal width: %v\n", terminalWidth) } barR := bar.NewProxyReader(r) return bar, &clearlineReader{barR, out} }
if err != nil { res.SetError(u.ErrCast(), cmds.ErrNormal) return } size := int64(0) s, found := req.Values()["size"] if found { size = s.(int64) } showProgressBar := !quiet && size >= progressBarMinSize var bar *pb.ProgressBar var terminalWidth int if showProgressBar { bar = pb.New64(size).SetUnits(pb.U_BYTES) bar.ManualUpdate = true bar.Start() // the progress bar lib doesn't give us a way to get the width of the output, // so as a hack we just use a callback to measure the output, then git rid of it terminalWidth = 0 bar.Callback = func(line string) { terminalWidth = len(line) bar.Callback = nil bar.Output = res.Stderr() log.Infof("terminal width: %v\n", terminalWidth) } bar.Update() }
if err != nil { res.SetError(u.ErrCast(), cmds.ErrNormal) return } var showProgressBar bool if prgFound { showProgressBar = progress } else if !quiet && !silent { showProgressBar = true } var bar *pb.ProgressBar var terminalWidth int if showProgressBar { bar = pb.New64(0).SetUnits(pb.U_BYTES) bar.ManualUpdate = true bar.Start() // the progress bar lib doesn't give us a way to get the width of the output, // so as a hack we just use a callback to measure the output, then git rid of it terminalWidth = 0 bar.Callback = func(line string) { terminalWidth = len(line) bar.Callback = nil bar.Output = res.Stderr() log.Infof("terminal width: %v\n", terminalWidth) } bar.Update() }