shithub: furgit

ref: af08c84539f9353718604988ba27ae3c466860fc
dir: /internal/progress/meter.go/

View raw version
package progress

import (
	"io"
	"time"
)

// Meter renders one in-place progress line.
type Meter struct {
	writer io.Writer
	flush  func() error

	title      string
	total      uint64
	delay      time.Duration
	sparse     bool
	throughput bool

	startedAt      time.Time
	nextUpdateAt   time.Time
	nextThroughput time.Time

	lastDone     uint64
	lastBytes    uint64
	lastPercent  int
	lastCounterW int
	sawValue     bool

	throughputSuffix string
}