diff options
| author | 2026-03-08 17:58:37 +0800 | |
|---|---|---|
| committer | 2026-03-08 17:58:37 +0800 | |
| commit | cf02f2958c191bea02126faf8daf72a7aae76bd9 (patch) | |
| tree | c2f919f851de0af99aade51a5a523ae0af0fe421 /internal/progress | |
| parent | format/pack/ingest: Call it writeProgressf (diff) | |
| signature | No signature | |
*: Fix lints v0.1.82
Diffstat (limited to 'internal/progress')
| -rw-r--r-- | internal/progress/counters.go | 17 | ||||
| -rw-r--r-- | internal/progress/render.go | 8 | ||||
| -rw-r--r-- | internal/progress/set.go | 12 |
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 } |
