Expand description
rget — a resumable, parallel HTTP download manager.
The crate is split so that each concern can be tested on its own:
| module | responsibility |
|---|---|
cli | argument parsing, command dispatch |
config | user settings and the first-run download-folder prompt |
http | requests, redirects, metadata probing, range requests |
engine | orchestration: probe → plan → transfer → verify |
scheduler | range planning, worker assignment, dynamic splitting |
worker | one range transfer at a time |
storage | SQLite persistence |
[file] | random-access writes, preallocation |
resume | recovery, reconciliation, remote validation |
retry | retry policy and backoff |
integrity | checksums |
progress | telemetry model, speed and ETA maths |
ui | terminal rendering |
mirror | mirror equivalence and source selection |
naming | destination filename selection and sanitisation |
limit | global bandwidth limiting |
The one design document worth reading before changing anything:
docs/CRASH_CONSISTENCY.md.
Modules§
- cli
- Argument parsing and command dispatch (PRD §37).
- config
- User settings, and the first-run download-folder prompt.
- engine
- Download orchestration.
- error
- Transfer-level errors, classified by whether retrying could possibly help.
- file
- Random-access destination file (PRD §9).
- fmt
- Human-facing formatting and the minimal ANSI styling we need.
- http
- HTTP client, metadata probing and range requests (PRD §6).
- integrity
- Checksum verification (PRD §16).
- limit
- Global bandwidth limiting (PRD §23).
- mirror
- Mirrors and source selection (PRD §15).
- naming
- Destination filename selection and sanitisation.
- netrc
.netrccredential lookup, sorgetpicks up saved logins the same waywgetandcurldo (PRD-adjacent: no flag should be required for a host the user has already told the rest of their tools how to authenticate to).- progress
- Progress telemetry (PRD §17, §18).
- resume
- Resume: remote validation and state reconciliation (PRD §12, §13).
- retry
- Exponential backoff with jitter (PRD §14).
- scheduler
- Byte-range planning and worker assignment (PRD §7, §8).
- shutdown
- Cooperative cancellation (PRD §26).
- storage
- Central SQLite state store (PRD §10, §11).
- ui
- Terminal rendering (PRD §19).
- worker
- One worker transferring one range at a time.