shithub: furgit

ref: 85f1212724e037e6934203f04a3f6231ac609503
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
}