From 5a1d99989fa32be1684b9290b4a58e8418b7b92d Mon Sep 17 00:00:00 2001
From: shenwc <spd260@126.com>
Date: 星期二, 26 十一月 2024 17:57:50 +0800
Subject: [PATCH] 11111
---
progress/progress.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/progress/progress.go b/progress/progress.go
new file mode 100755
index 0000000..e7972b1
--- /dev/null
+++ b/progress/progress.go
@@ -0,0 +1,47 @@
+// Package progress provides a proxy for download progress.
+package progress
+
+import (
+ "io"
+ "time"
+
+ pb "github.com/gosuri/uiprogress"
+)
+
+// TODO: refactor to just check EOF
+
+// reader wrapping a progress bar.
+type reader struct {
+ bars *pb.Progress
+ r io.ReadCloser
+ written int
+}
+
+// Read implementation.
+func (r *reader) Read(b []byte) (int, error) {
+ n, err := r.r.Read(b)
+ r.written += n
+ r.bars.Bars[0].Set(r.written)
+ return n, err
+}
+
+// Close implementation.
+func (r *reader) Close() error {
+ r.bars.Stop()
+ return r.r.Close()
+}
+
+// Reader returns a progress bar reader.
+func Reader(size int, r io.ReadCloser) io.ReadCloser {
+ bars := pb.New()
+ bars.Width = 50
+ bars.AddBar(size)
+ bars.Start()
+ bars.SetRefreshInterval(50 * time.Millisecond)
+ bars.Bars[0].AppendCompleted()
+
+ return &reader{
+ bars: bars,
+ r: r,
+ }
+}
--
Gitblit v1.8.0