# registry-backup
A command line utility for downloading all .crate files hosted by a Cargo registry server.
Use cases:
- **Backup:** retrieve a registry server's files for backup storage
- **Export:** pull the files so you can host them at another registry server
## Example Usage:
Specify the registry index either as a local path (`--index-path`)...
```console
$ git clone https://github.com/rust-lang/crates.io-index.git
$ registry-backup \
--index-path crates.io-index \
--output-path crates.io-crate-files \
--requests-per-second 10
```
...or as an `--index-url` instead:
```console
$ registry-backup \
--index-url ssh://git@ssh.shipyard.rs/shipyard-rs/crate-index.git \
--output-path shipyard-rs-crate-files \
--auth-token ${AUTH_TOKEN} # for private registry, need auth
```
## Install
```console
$ cargo install registry-backup --git https://git.shipyard.rs/jstrong/registry-backup.git
```
## Runtime Options
```console
$ ./target/release/registry-backup --help
{{ cli_menu }}
```
## Configuration File
A toml configuration file may be used instead of command line flags. A sample file (`config.toml.sample`) is included. From the example file:
```toml
{{ config_sample }}
```
## Build From Source
```console
$ git clone https://git.shipyard.rs/jstrong/registry-backup.git
$ cd registry-backup
$ just release-build # alternatively, cargo build --bin registry-backup --release
# ./target/release/registry-backup --help
# cp target/release/registry-backup ~/.cargo/bin/
```
## Running Tests
```console
$ just test # alternatively, cargo test
```
## Justfile
The repository includes a `justfile` with functionality for building, testing, etc.
Included commands:
```console
$ just --list
{{ just_commands }}
```
The commands that mirror cargo commands (e.g. `just test` ) are included for the purpose of convenience, so that various options (e.g. `RUSTFLAGS='-C target-cpu=native` ) can be included without typing them out each time.
## Generating `README.md`
This file is generated using a template (`doc/README.tera.md`) rendered using updated outputs of the CLI menu, config sample, and other values.
This version of `README.md` was generated at `{{ generation_time }}` based on git commit `{{ git_commit }}` .
To (re-)generate the `README.md` file, use the justfile command:
```console
$ just generate-readme
```