aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-06-13 03:32:21 +0000
committerGravatar Runxi Yu2026-06-13 04:59:51 +0000
commitbe63ecd9711b46135bbff1769c2e4c3642255ef1 (patch)
treed5581c8b2e438af2b8ae82dd8f200393b2dbc5d3 /internal
parentTODO: Update (diff)
Unify lengths
Diffstat (limited to 'internal')
-rw-r--r--internal/iolimit/expect_length_reader.go23
-rw-r--r--internal/progress/meter.go17
-rw-r--r--internal/progress/render.go11
3 files changed, 13 insertions, 38 deletions
diff --git a/internal/iolimit/expect_length_reader.go b/internal/iolimit/expect_length_reader.go
index 72b0d912..4e5e5950 100644
--- a/internal/iolimit/expect_length_reader.go
+++ b/internal/iolimit/expect_length_reader.go
@@ -2,10 +2,7 @@ package iolimit
import (
"errors"
- "fmt"
"io"
-
- "lindenii.org/go/lgo/intconv"
)
// ErrExpectedLengthExceeded reports that a stream
@@ -24,7 +21,7 @@ var ErrExpectedLengthExceeded = errors.New("iolimit: stream exceeded expected le
// As a result,
// overlength streams are detected only
// when a caller reads at or past the boundary.
-func ExpectLengthReader(src io.Reader, expected uint64) io.Reader {
+func ExpectLengthReader(src io.Reader, expected int) io.Reader {
return &expectLengthReader{
src: src,
remaining: expected,
@@ -33,7 +30,7 @@ func ExpectLengthReader(src io.Reader, expected uint64) io.Reader {
type expectLengthReader struct {
src io.Reader
- remaining uint64
+ remaining int
}
func (reader *expectLengthReader) Read(dst []byte) (int, error) {
@@ -56,23 +53,13 @@ func (reader *expectLengthReader) Read(dst []byte) (int, error) {
return 0, err
}
- if uint64(len(dst)) > reader.remaining {
- limit, err := intconv.Uint64ToInt(reader.remaining)
- if err != nil {
- return 0, fmt.Errorf("iolimit: %w", err)
- }
-
- dst = dst[:limit]
+ if len(dst) > reader.remaining {
+ dst = dst[:reader.remaining]
}
n, err := reader.src.Read(dst)
if n > 0 {
- read, convErr := intconv.IntToUint64(n)
- if convErr != nil {
- return n, fmt.Errorf("iolimit: %w", convErr)
- }
-
- reader.remaining -= read
+ reader.remaining -= n
}
if errors.Is(err, io.EOF) {
diff --git a/internal/progress/meter.go b/internal/progress/meter.go
index 0e4138de..e5e64fb4 100644
--- a/internal/progress/meter.go
+++ b/internal/progress/meter.go
@@ -3,7 +3,6 @@ package progress
import (
"time"
- "lindenii.org/go/lgo/intconv"
"lindenii.org/go/lgo/iowrap"
)
@@ -17,7 +16,7 @@ type Meter struct {
writer iowrap.WriteFlusher
title string
- total uint64
+ total int
delay time.Duration
sparse bool
throughput bool
@@ -26,8 +25,8 @@ type Meter struct {
nextUpdateAt time.Time
nextThroughput time.Time
- lastDone uint64
- lastBytes uint64
+ lastDone int
+ lastBytes int
lastPercent int
lastCounterW int
sawValue bool
@@ -58,7 +57,7 @@ type Options struct {
Writer iowrap.WriteFlusher
Title string
- Total uint64
+ Total int
// Delay suppresses progress output until Delay has elapsed since Start.
Delay time.Duration
@@ -70,7 +69,7 @@ type Options struct {
// Set records current progress
// and renders when percent changed or the 1s tick elapsed.
-func (meter *Meter) Set(done uint64, bytes uint64) {
+func (meter *Meter) Set(done int, bytes int) {
meter.lastDone = done
meter.lastBytes = bytes
meter.sawValue = true
@@ -85,11 +84,7 @@ func (meter *Meter) Set(done uint64, bytes uint64) {
percentChanged := false
if meter.total > 0 {
- percent, err := intconv.Uint64ToInt(done * 100 / meter.total)
- if err != nil {
- return // TODO
- }
-
+ percent := int(int64(done) * 100 / int64(meter.total))
percentChanged = percent != meter.lastPercent
}
diff --git a/internal/progress/render.go b/internal/progress/render.go
index f51852eb..814ced98 100644
--- a/internal/progress/render.go
+++ b/internal/progress/render.go
@@ -7,7 +7,6 @@ import (
"lindenii.org/go/furgit/internal/utils"
"lindenii.org/go/lgo/fmt/humanize"
- "lindenii.org/go/lgo/intconv"
)
func (meter *Meter) render(now time.Time, eol string) {
@@ -42,13 +41,7 @@ func (meter *Meter) render(now time.Time, eol string) {
func (meter *Meter) renderCounters() string {
if meter.total > 0 {
- u, err := intconv.Uint64ToInt(meter.lastDone * 100 / meter.total)
- if err != nil {
- return "overflow"
- // TODO
- }
-
- meter.lastPercent = u
+ meter.lastPercent = int(int64(meter.lastDone) * 100 / int64(meter.total))
return fmt.Sprintf("%3d%% (%d/%d)%s", meter.lastPercent, meter.lastDone, meter.total, meter.throughputSuffix)
}
@@ -75,5 +68,5 @@ func (meter *Meter) refreshThroughput(now time.Time) {
}
rate := uint64(float64(meter.lastBytes) / elapsed.Seconds())
- meter.throughputSuffix = ", " + humanize.Bytes(meter.lastBytes) + " | " + humanize.Bytes(rate) + "/s"
+ meter.throughputSuffix = ", " + humanize.Bytes(uint64(meter.lastBytes)) + " | " + humanize.Bytes(rate) + "/s" //nolint:gosec
}