Files
aria2-rust-pro/README.md
T

132 lines
4.7 KiB
Markdown

# aria2-rust-pro
`aria2-rust-pro` is a Rust 2024 rewrite of the current Aria2-Pro-Core
behavior, with upstream aria2 1.37.0 compatibility as the primary external
contract.
This repository is the maintained Rust line for the project. It aims to keep
the familiar aria2 configuration and RPC surface, while moving the
implementation onto a modern Cargo-based toolchain, stricter quality gates, and
source-first packaging automation.
## What This Repository Provides
- a Rust-native `aria2-rust-pro` CLI with aria2-style config and RPC behavior
- a Docker image build that preserves the familiar Pro Docker environment model
- a Cargo-native `xtask` workflow for release packaging, Docker smoke tests,
and local export
- strict workspace-wide linting, testing, and dependency policy enforcement
- local release staging for Windows artifacts and portable Docker image tar
exports
## Current Snapshot
The repository already includes:
- a local Windows release packaging flow
- a local Docker image export flow
- JSON-RPC and XML-RPC coverage for representative aria2 client paths
- BitTorrent, Metalink, HTTP, HTTPS, XML-RPC, JSON-RPC, and SFTP feature
surfaces in the current binary banner
The current public repository state should be read as:
- source of truth for ongoing Rust development
- suitable for local builds, local packaging, and local Docker deployment
- backed by a self-hosted Gitea `v1.0.0` release with Windows archive, Docker
tar, manifests, and checksum assets
- not yet presented as a public container registry or broad multi-platform
binary distribution service
## Quick Start
### Build the binary
```powershell
rtk cargo build --release -p aria2-rust-pro-cli --bin aria2-rust-pro
```
### Check the version banner
```powershell
.\target\release\aria2-rust-pro.exe --version
```
### Run the main validation lanes
```powershell
rtk cargo check --workspace --all-targets --all-features --locked
rtk cargo nextest run --workspace --all-targets --all-features --locked
```
### Package a local release artifact
```powershell
rtk cargo run --manifest-path .\xtask\Cargo.toml -- release package-local --build
```
### Build and export a local Docker image tar
```powershell
rtk cargo run --manifest-path .\xtask\Cargo.toml -- docker export-local --build
```
## Repository Guide
- [docs/deployment/README.md](docs/deployment/README.md): native and Docker
deployment guide
- [docs/migration/README.md](docs/migration/README.md): migration notes from
existing Aria2-Pro-Core and Aria2-Pro-Docker installs
- [docs/release/README.md](docs/release/README.md): local release packaging,
Docker export, and artifact manifest flow
- [docs/release/RELEASE-NOTES-TEMPLATE.md](docs/release/RELEASE-NOTES-TEMPLATE.md):
release announcement template
- [docs/compatibility/aria2-compat-ledger.md](docs/compatibility/aria2-compat-ledger.md):
compatibility tracking ledger
- [docs/testing/quality-gates.md](docs/testing/quality-gates.md): required test
and lint gates
- [CONTRIBUTING.md](CONTRIBUTING.md): contribution workflow and repository
expectations
- [CHANGELOG.md](CHANGELOG.md): release-facing change history
## Workspace Layout
- `crates/aria2-rust-pro-cli`: CLI surface, config projection, runtime launch,
and rendering
- `crates/aria2-rust-pro-compat`: aria2-facing option and compatibility layer
- `crates/aria2-rust-pro-core`: scheduler, engine, runtime coordination
- `crates/aria2-rust-pro-protocol`: HTTP, BitTorrent, Metalink, and transport
domain logic
- `crates/aria2-rust-pro-rpc`: JSON-RPC, XML-RPC, routing, and handlers
- `crates/aria2-rust-pro-storage`: session and persistence layers
- `crates/aria2-rust-pro-tests`: integration, compatibility, and pressure tests
- `xtask/`: Cargo-native project automation
- `docker/`: image build, entrypoint, compose example, and bundled defaults
## Packaging and Local Artifacts
Local staged artifacts live under:
- `dist/release/v<version>/` for packaged release archives
- `dist/docker/v<version>/` for portable Docker image tar exports
The package and export commands emit checksum files and JSON manifests beside
the artifacts so a staged build can be moved to another machine and verified
without guessing which binary or image tag it came from.
## Compatibility Direction
The compatibility target is practical aria2 interoperability rather than a
novel CLI surface. That means the project prioritizes:
- aria2-style config semantics
- existing RPC client compatibility
- migration paths from Aria2-Pro-Core and Aria2-Pro-Docker
- release packaging that keeps runtime evidence with the artifact
## License
`aria2-rust-pro` is licensed under [GPL-2.0-or-later](LICENSE). OpenSSL
linking-exception handling remains a release and documentation concern carried
forward from the aria2 ecosystem.