aboutsummaryrefslogtreecommitdiff
path: root/internal/progress
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-08 17:58:37 +0800
committerGravatar Runxi Yu2026-03-08 17:58:37 +0800
commitcf02f2958c191bea02126faf8daf72a7aae76bd9 (patch)
treec2f919f851de0af99aade51a5a523ae0af0fe421 /internal/progress
parentformat/pack/ingest: Call it writeProgressf (diff)
signatureNo signature
*: Fix lints v0.1.82
Diffstat (limited to 'internal/progress')
-rw-r--r--internal/progress/counters.go17
-rw-r--r--internal/progress/render.go8
-rw-r--r--internal/progress/set.go12
3 files changed, 27 insertions, 10 deletions
diff --git a/internal/progress/counters.go b/internal/progress/counters.go
index 25d81878..7c7a5085 100644
--- a/internal/progress/counters.go
+++ b/internal/progress/counters.go
@@ -1,13 +1,22 @@
package progress
-import "fmt"
+import (
+ "fmt"
+
+ "codeberg.org/lindenii/furgit/internal/intconv"
+)
func (meter *Meter) renderCounters() string {
if meter.total > 0 {
- percent := int(meter.lastDone * 100 / meter.total)
- meter.lastPercent = percent
+ u, err := intconv.Uint64ToInt(meter.lastDone * 100 / meter.total)
+ if err != nil {
+ return "overflow"
+ // TODO
+ }
+
+ meter.lastPercent = u
- return fmt.Sprintf("%3d%% (%d/%d)%s", percent, meter.lastDone, meter.total, meter.throughputSuffix)
+ return fmt.Sprintf("%3d%% (%d/%d)%s", meter.lastPercent, meter.lastDone, meter.total, meter.throughputSuffix)
}
return fmt.Sprintf("%d%s", meter.lastDone, meter.throughputSuffix)
diff --git a/internal/progress/render.go b/internal/progress/render.go
index 36836cde..6173016a 100644
--- a/internal/progress/render.go
+++ b/internal/progress/render.go
@@ -16,16 +16,16 @@ func (meter *Meter) render(now time.Time, eol string) {
counters := meter.renderCounters()
- clear := 0
+ clear1 := 0
if len(counters) < meter.lastCounterW {
- clear = meter.lastCounterW - len(counters) + 1
+ clear1 = meter.lastCounterW - len(counters) + 1
}
meter.lastCounterW = len(counters)
line := meter.title + ": " + counters
- if clear > 0 {
- line += strings.Repeat(" ", clear)
+ if clear1 > 0 {
+ line += strings.Repeat(" ", clear1)
}
line += eol
diff --git a/internal/progress/set.go b/internal/progress/set.go
index b7ed5b28..06cf889d 100644
--- a/internal/progress/set.go
+++ b/internal/progress/set.go
@@ -1,6 +1,10 @@
package progress
-import "time"
+import (
+ "time"
+
+ "codeberg.org/lindenii/furgit/internal/intconv"
+)
// Set records current progress and renders when percent changed or the 1s tick
// elapsed.
@@ -19,7 +23,11 @@ func (meter *Meter) Set(done uint64, bytes uint64) {
percentChanged := false
if meter.total > 0 {
- percent := int(done * 100 / meter.total)
+ percent, err := intconv.Uint64ToInt(done * 100 / meter.total)
+ if err != nil {
+ return // TODO
+ }
+
percentChanged = percent != meter.lastPercent
}