feat(download): implement resume support with .pget metadata state #142
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
thwap/pget!142
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/resume-support"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Implement full resume support: save completed chunk state to
.pgetmetadata file alongside the output, restore state on restart, verify file integrity on resume.Why
Enables interrupted downloads to resume without re-downloading completed chunks.
Testing
go vet ./...passesgo build ./...passesgolangci-lint run ./...passesBreaking Changes
None —
Download()signature unchanged.Notes
ResumeState— tracks completed chunks in a thread-safe map with JSON persistenceresume.go—SaveResumeState,LoadResumeState,MarkDone,IsDone,CleanupResumeState,VerifyFileSize.<filename>.pgetalongside output (e.g.,.output.pget)-c: reads.pgetstate, verifies total size + chunk count match, skips done chunksVerifyFileSizecompares actual vs expected size; mismatch triggers fresh start-c, state preserved for future resumeCloses #0052
Closes #0053
Closes #0054
Closes #0055
Review: APPROVED
Verification
go vet ./...— ✅ passesgo build ./...— ✅ passesgolangci-lint v2 run ./...— ✅ 0 issuesChanges
internal/downloader/resume.go(new, 112 lines) — ResumeState, JSON persistence, thread-safe chunk tracking, file verification, metadata cleanupinternal/downloader/download.go—Result.Idxfor chunk tracking, workers skip done chunks, state saved after each chunk, restored on resume, cleaned up on successROADMAP.md— Marks Phase 2 resume items as [x]Suggestions (non-blocking)
SaveResumeStateerrors silently discarded during downloadCloses #0052, #0053, #0054, #0055 on merge.