Skip to content

Lightweight binary to download only project required crates for offline crates.io mirror

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

wcampbell0x2a/zerus

Folders and files

NameName
Last commit message
Last commit date
Apr 11, 2024
Feb 9, 2025
Feb 8, 2025
Feb 9, 2025
Jul 23, 2022
Feb 9, 2025
Feb 9, 2025
Feb 9, 2025
Jul 28, 2022
Feb 3, 2023
Feb 3, 2023
Feb 9, 2025
Oct 12, 2024
Feb 9, 2025

Repository files navigation

zerus

github crates.io docs.rs build status

Lightweight binary to download only project required crates for offline crates.io mirror

Build zerus

Either build from published source in crates.io.

$ cargo install zerus --locked

Or download from github releases.

Usage

Usage: zerus [OPTIONS] <MIRROR_PATH> [WORKSPACES]...

Arguments:
  <MIRROR_PATH>    new directory to contain offline mirror crate files
  [WORKSPACES]...  list of Cargo.toml files to vendor depends

Options:
      --build-std <VERSION>            Cache build-std depends for nightly version
      --git-index-url <GIT_INDEX_URL>  Hostname for git index crates.io
      --skip-git-index                 Skip download of git index crates.io
  -h, --help                           Print help
  -V, --version                        Print version

Example of adding dependencies of two projects, meant to be hosted on 127.0.0.1.

$ zerus new-mirror ../deku/Cargo.toml ../adsb_deku/Cargo.toml --git-index-url http://127.0.0.1

Adding the top 100 rust crates used by rust-playground is easy:

$ git clone https://github.com/rust-lang/rust-playground
$ zerus new-mirror rust-playground/top-crates/Cargo.toml

Serve mirror

Use any http(s) server.

Build with mirror

Add the following to the .cargo/config file(replacing IP with your ip).

[source.zerus]
registry = "sparse+http://[IP]/crates.io-index/"

[source.crates-io]
replace-with = "zerus"

Margo

Through the use of margo, you can make a alternate Cargo registry without downloading the entire crates.io git index.

$ zerus mirror ../deku/Cargo.toml --build-std nightly --skip-git-index
$ margo add --registry my-registry-directory mirror/*/*/*/*/*/*.crate