75f7d715f8
With Cargo 1.68.0, sparse registries were made stable. With sparse registries, index metadata is stored in an HTTP api rather than in a git repository. As relevant to Crane, the relevant changes are mostly that registries do not always start with `registry+` and mostly start with `registry+` or `sparse+` depending on whether the registry is sparse or not. This PR adjusts the core of Crane to differentiate between `registry` and `sparse`, and adds a new sparse registry factory to make things easy. --------- Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com> |
||
---|---|---|
.github | ||
checks | ||
docs | ||
examples | ||
extra-tests | ||
lib | ||
pkgs | ||
.envrc | ||
.git-blame-ignore-revs | ||
.gitignore | ||
CHANGELOG.md | ||
default.nix | ||
flake.lock | ||
flake.nix | ||
LICENSE | ||
README.md | ||
shell.nix |
Crane
A Nix library for building cargo projects.
- Source fetching: automatically done using a Cargo.lock file
- Incremental: build your workspace dependencies just once, then quickly lint, build, and test changes to your project without slowing down
- Composable: split builds and tests into granular steps. Gate CI without burdening downstream consumers building from source.
Features
- Automatic vendoring of dependencies in a way that works with Nix
- Alternative cargo registries are supported (with a minor configuration change)
- Git dependencies are automatically supported without additional
configuration.
- Cargo retains the flexibility to only use these dependencies when they are actually needed, without forcing an override for the entire workspace.
- Reusing dependency artifacts after only building them once
- clippy checks
- rustfmt checks
- cargo-audit for vulnerability scanning
- cargo-nextest a next-generation test runner
- cargo-tarpaulin for code coverage
- trunk for wasm frontend apps
Getting Started
The easiest way to get started is to initialize a flake from a template:
# Start with a comprehensive suite of tests
nix flake init -t github:ipetkov/crane#quick-start
Otherwise check out the examples and templates for more detailed examples. An API Reference is also available.
Compatibility Policy
Breaking changes can land on the master
branch at any time, so it is
recommended you use a versioning strategy when consuming this library (for
example, using something like flakes or niv).
Tagged releases will be cut periodically and changes will be documented in the CHANGELOG. Release versions will follow Semantic Versioning.
The test suite is run against the latest stable nixpkgs release, as well as
nixpkgs-unstable
. Any breakage on those channels is considered a bug and
should be reported as such.
License
This project is licensed under the MIT license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion by you, shall be licensed as MIT, without any additional terms or conditions.