1
0
mirror of https://github.com/coalaura/up.git synced 2025-07-19 21:53:25 +00:00
Files
up/client/progress.go

32 lines
517 B
Go
Raw Normal View History

2025-06-20 16:10:38 +02:00
package main
import (
"io"
)
type ProgressReader struct {
io.Reader
2025-06-20 17:10:03 +02:00
label string
total int64
read int64
2025-06-20 16:10:38 +02:00
}
func NewProgressReader(label string, total int64, reader io.Reader) *ProgressReader {
return &ProgressReader{
Reader: reader,
2025-06-20 17:10:03 +02:00
label: label,
total: total,
2025-06-20 16:10:38 +02:00
}
}
func (pr *ProgressReader) Read(p []byte) (int, error) {
n, err := pr.Reader.Read(p)
2025-06-20 17:10:03 +02:00
pr.read += int64(n)
2025-06-20 16:10:38 +02:00
2025-06-20 17:10:03 +02:00
percentage := float64(pr.read) / float64(pr.total) * 100
log.Printf("\r%s %.1f%%", pr.label, percentage)
2025-06-20 16:10:38 +02:00
2025-06-20 17:10:03 +02:00
return n, err
2025-06-20 16:10:38 +02:00
}