diff --git a/README.md b/README.md new file mode 100644 index 0000000..e42d862 --- /dev/null +++ b/README.md @@ -0,0 +1,105 @@ +

aria

+ +

+ Friendly aria2c wrapper for your personal downloads.
+ Quick, simple, enjoyable. +

+ +

+ License + Platform + Maintainer +

+ +`aria` wraps the JSONRPC server of the great [aria2](https://aria2.github.io/), exposing just enough functionality to be dangerous. + +--- + +## Installation + +Build and install the binary and man page to `$(PREFIX)/bin` and `$(PREFIX)/share/man/man1` (defaults to `~/.local`): + +```sh +make install +``` + +To install elsewhere, override `PREFIX`: + +```sh +make install PREFIX=/usr/local +``` + +To remove: + +```sh +make uninstall +``` + +> [!NOTE] +> Make sure `$(PREFIX)/bin` is in your `PATH` to run `aria` from anywhere. + +--- + +## Features + +### One command for everything + +Add, pause, resume, and remove downloads with a unified API — no more memorising cryptic flags: + +```sh +aria add https://example.com/file.iso +aria add uri https://example.com/file.iso +aria add torrent https://example.com/linux.torrent +aria pause 8a4c3f21e09b7d55 +aria resume 8a4c3f21e09b7d55 +aria remove 8a4c3f21e09b7d55 +aria purge +``` + +Commands without arguments act on all downloads, so you can pause or resume everything at once: + +```sh +aria pause +aria resume +``` + +### Interactive list + +Run `aria list` to check the status of all your downloads in a beautifully formatted table, +live-refreshing every second: + +```sh +aria list +``` + +Pick a download with the arrow keys and `enter`, and its **GID** is printed to `stdout`, +ready to be composed with any other tool: + +```sh +aria pause "$(aria list)" +``` + +### Options + +Every command supports a couple of well-chosen options, and nothing more: + +| Option | Description | Default | +| --- | --- | --- | +| `-d`, `--directory ` | Define the directory to save files. | `~/Downloads/` | +| `--seed` | Enable seeding after torrent download. | | + +### Simple configuration + +Point *aria* to your `aria2c` server by directly editing the source: + +```swift +enum Config { + static let host: String = "127.0.0.1" + static let port: Int = 6800 + static let secret: String = "my_secret" + static var endpoint: URL { + URL(string: "http://\(host):\(port)/jsonrpc")! + } + static let directory: String = "~/Downloads/" +} +```