ani-cli-rs 0.9.5

Cross-platform Rust port of ani-cli with Anikoto providers and a reusable provider/playback library
Documentation
# Contributing to ani-cli-rs


Thank you for helping improve ani-cli-rs. Bug fixes, compatibility improvements, tests, documentation, and focused feature proposals are welcome.

## Before starting


- Search existing issues and pull requests.
- Keep changes scoped to one problem where practical.
- Open an issue before implementing a large CLI redesign, public API break, new network provider, or plugin architecture change.
- Do not commit credentials, cookies, complete signed media URLs, personal filesystem paths, or raw debug dumps containing private information.

## Development setup


Install the current stable Rust toolchain. The package uses Rust edition 2024.

```console
git clone https://github.com/vorlie/ani-cli-rs.git
cd ani-cli-rs
cargo build
```

Playback and HLS download tests may additionally require mpv, VLC, Syncplay, yt-dlp, or FFmpeg, depending on the workflow being changed.

## Required checks


Run these before submitting a pull request:

```console
cargo fmt --check
cargo check --all-targets
cargo clippy --all-targets -- -D warnings
cargo test
```

Normal tests must remain deterministic and must not require live provider access. Use fixtures or the mock HTTP server for scraper changes. Anikoto API/MegaPlay smoke tests require `ANI_CLI_LIVE_ANIKOTO=1`; Anikoto.cz smoke tests require `ANI_CLI_LIVE_ANIKOTO2=1`.

## Scraper changes


Read [`docs/ANIKOTO-KOTOCDN.md`](docs/ANIKOTO-KOTOCDN.md) before changing the Anikoto API/MegaPlay workflow, or [`docs/ANIKOTO-CZ.md`](docs/ANIKOTO-CZ.md) before changing the Anikoto.cz AJAX and server workflow.

- Include sanitized fixtures for new response shapes and encryption paths.
- Test partial provider failures instead of assuming every extracted source works.
- Preserve required request headers in `StreamLink` rather than constructing shell command strings.
- Avoid logging complete temporary media URLs, authorization values, cookies, or other replayable credentials.
- Explain whether behavior matches Bash ani-cli, AniPlay, or a newly observed upstream change.

## CLI and platform changes


- Preserve `ani-cli [options] [query] [options]` compatibility where possible.
- Keep process arguments separate and platform-safe.
- Add parser or integration tests for new flags and environment variables.
- Document intentional Windows, Linux, or macOS differences.

## Commits and pull requests


Use concise, imperative commit messages. Conventional prefixes such as `fix:`, `feat:`, `docs:`, `test:`, and `chore:` are encouraged but not mandatory.

Fill out the pull-request template, link the relevant issue, and describe manual testing. Contributions are accepted under the repository's GPL-3.0-only license.