From c75a034d25ca87f3d209a8e82c743b8a7e96573b Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 8 Mar 2026 14:15:38 +0800 Subject: internal/progress: Add progress meter --- internal/progress/render.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 internal/progress/render.go (limited to 'internal/progress/render.go') diff --git a/internal/progress/render.go b/internal/progress/render.go new file mode 100644 index 00000000..a2395d98 --- /dev/null +++ b/internal/progress/render.go @@ -0,0 +1,34 @@ +package progress + +import ( + "strings" + "time" + + "codeberg.org/lindenii/furgit/internal/utils" +) + +func (meter *Meter) render(now time.Time, eol string) { + if meter.delay > 0 && now.Sub(meter.startedAt) < meter.delay && eol == "\r" { + return + } + + 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() + } +} -- cgit v1.3.1-10-gc9f91