chore: initial sanitized public snapshot
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user