3 releases (breaking)
Uses new Rust 2024
| 0.2.0 | Feb 7, 2026 |
|---|---|
| 0.1.0 | Jan 31, 2026 |
| 0.0.0 | Jan 28, 2026 |
#67 in Configuration
33KB
693 lines
Prep is a cross-platform CLI tool that provides Rust workspace verification in a single short command.
You can just invoke prep ci and if the checks succeed then you can rest easy knowing that your PR won't fail CI.
If you're upgrading from an earlier version then you can read about the changes in the changelog.
Motivation
Rust projects tend to have a wide variety of fairly complicated verification steps in CI. These steps help ensure that the project stays consistent and keeps working in various scenarios.
However, these CI steps are either written as GitHub Action YAML files or as Bash scripts. Running GitHub Actions requires a rather heavyweight Docker image, which expects a Unix userland, just like Bash scripts. Additionally, they target ephemeral VMs, so they do a lot of tooling setup that isn't efficient for a local machine. All of that meaning that you're really out of luck on Windows and even on Unix it's going to be needlessly cumbersome.
So you need to analyze the specifics of a project's CI and craft custom local scripts to emulate the CI steps. That, or you just manually invoke a few Cargo commands and hope for the best, leading to frequent CI failures on your PRs. Which sucks because CI tends to run at a lot slower speed than your local machine, especially due to cold build cache.
Prep to the rescue
Before opening a PR you can just run prep ci locally and verify that everything matches CI expectations.
Because Prep aims for a rather robust set of verifications this will be beneficial even when the project still uses custom CI scripts.
However, for best results the project itself should run prep ci in its CI instead of custom scripts.
That way the only problems that remain uncaught locally are platform specific, which the CI will catch with its multi-platform job matrix.
Installation
cargo install prep --locked
Usage
Usage: prep [command] [options]
Commands:
ci Verify for CI.
clp clippy Analyze with Clippy.
copyright Verify copyright headers.
fmt format Format with rustfmt.
init Initialize Prep configuration.
help Print help for the provided command.
Options:
-h --help Print help for the provided command.
-V --version Print version information.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~4.5–7MB
~129K SLoC