fastpaper-cli 0.2.1

CLI tool for searching, downloading and reading academic papers
Documentation
# Contributing to fastpaper-cli

> 中文版:[CONTRIBUTING.zh-CN.md]CONTRIBUTING.zh-CN.md

Entry point for contributors. Detailed developer docs live under [docs/](docs/).

## Development setup

All you need is a stable Rust toolchain:

```bash
git clone https://github.com/zhangyee/fastpaper-cli
cd fastpaper-cli
cargo build
cargo test
```

No API keys or configuration are required — the entire test suite runs offline against recorded fixtures.

## Project layout

`fastpaper` is a synchronous, stateless CLI: clap parses the command, `main.rs` dispatches to one self-contained source module, and the result is rendered by the output module. Read [docs/architecture.md](docs/architecture.md) for the module map, data flow, and design philosophy.

## Making changes

- **Tests first.** Every PR must come with tests. Parser changes are tested against fixtures; HTTP behavior is tested with mockito. See [docs/testing.md]docs/testing.md.
- **Conventional commits.** Use `feat` / `fix` / `docs` / `chore` / `style` with an optional scope, e.g. `feat(xueshu): add fixture and basic search response parsing`.
- **PR flow.** Fork → feature branch → PR against `main`. In the PR description, explain the motivation and how you tested the change.

## Adding a new source

The most common contribution. Step-by-step guide with a worked example: [docs/adding-a-source.md](docs/adding-a-source.md).

## Versioning & releases

Versions and tags are managed by the maintainer. **Do not change `version` in `Cargo.toml` in a PR.** How releases are built and published is described in [docs/release.md](docs/release.md).

## Reference

Per-source API research notes (endpoints, response shapes, rate limits — written in Chinese) are indexed in [docs/sources/README.md](docs/sources/README.md).