aboutsummaryrefslogtreecommitdiff
path: root/internal/progress
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-08 17:53:45 +0800
committerGravatar Runxi Yu2026-03-08 17:53:45 +0800
commit3fe07dd316bde2ea625166176b2285bf0c631889 (patch)
tree181a5aa36765a98a2df43c9ab685cb241fd6a724 /internal/progress
parentinternal/progress: Use range here (diff)
signatureNo signature
*: Fix lints
Diffstat (limited to 'internal/progress')
-rw-r--r--internal/progress/humanize.go1
-rw-r--r--internal/progress/render.go4
-rw-r--r--internal/progress/set.go1
3 files changed, 6 insertions, 0 deletions
diff --git a/internal/progress/humanize.go b/internal/progress/humanize.go
index fd68e1e9..f13845f7 100644
--- a/internal/progress/humanize.go
+++ b/internal/progress/humanize.go
@@ -9,6 +9,7 @@ func humanizeBytes(n uint64) string {
}
value := float64(n)
+
units := []string{"KiB", "MiB", "GiB", "TiB", "PiB"}
for i := range units {
value /= unit
diff --git a/internal/progress/render.go b/internal/progress/render.go
index a2395d98..36836cde 100644
--- a/internal/progress/render.go
+++ b/internal/progress/render.go
@@ -15,19 +15,23 @@ func (meter *Meter) render(now time.Time, eol string) {
meter.refreshThroughput(now)
counters := meter.renderCounters()
+
clear := 0
if len(counters) < meter.lastCounterW {
clear = meter.lastCounterW - len(counters) + 1
}
+
meter.lastCounterW = len(counters)
line := meter.title + ": " + counters
if clear > 0 {
line += strings.Repeat(" ", clear)
}
+
line += eol
utils.BestEffortFprintf(meter.writer, "%s", line)
+
if meter.flush != nil {
_ = meter.flush()
}
diff --git a/internal/progress/set.go b/internal/progress/set.go
index 3a580a63..b7ed5b28 100644
--- a/internal/progress/set.go
+++ b/internal/progress/set.go
@@ -17,6 +17,7 @@ func (meter *Meter) Set(done uint64, bytes uint64) {
forced := meter.consumeUpdateTick(now)
percentChanged := false
+
if meter.total > 0 {
percent := int(done * 100 / meter.total)
percentChanged = percent != meter.lastPercent