Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Changelog

## [Unreleased]

### Added

* `--crates <main|aux|all>` option to the `clippy` command. ([#18] by [@xStrom])

### Changed

* `ci` `clippy` now uses `--crates all` by default and does two separate checks with `--crates main` and `--crates aux` in extended mode. ([#18] by [@xStrom])

## [0.1.0] - 2026-01-31

### Added

* `clippy` command to easily run `cargo clippy --workspace --all-features --locked`. ([#2] by [@xStrom])
* `format` command to easily run `cargo fmt --all`. ([#3] by [@xStrom])
* `ci` command to easily run `format` and `clippy` in strict verification mode. ([#5] by [@xStrom])

[@xStrom]: https://github.com/xStrom

[#2]: https://github.com/Nevermore/prep/pull/2
[#3]: https://github.com/Nevermore/prep/pull/3
[#5]: https://github.com/Nevermore/prep/pull/5
[#18]: https://github.com/Nevermore/prep/pull/18

[Unreleased]: https://github.com/Nevermore/prep/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/Nevermore/prep/compare/v0.0.0...v0.1.0
1 change: 0 additions & 1 deletion README.md

This file was deleted.

72 changes: 72 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<div align="center">

# Prep

**Prepare Rust projects for greatness**

[![Latest published version.](https://img.shields.io/crates/v/prep.svg)](https://crates.io/crates/prep)
[![Dependency staleness status.](https://deps.rs/crate/prep/latest/status.svg)](https://deps.rs/crate/prep)
[![Apache 2.0 or MIT license.](https://img.shields.io/badge/license-Apache--2.0_OR_MIT-blue.svg)](#license)

</div>

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.

The latest version is [0.1.0] which was published on 2026-01-31.
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

```sh
cargo install prep --locked
```

## Usage

```
Usage: prep [command] [options]

Commands:
ci Verify for CI.
clp clippy Analyze with Clippy.
fmt format Format with rustfmt.
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](LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>)

at your option.

[0.1.0]: https://github.com/Nevermore/prep/releases/tag/v0.1.0
[changelog]: prep/CHANGELOG.md
1 change: 1 addition & 0 deletions prep/AUTHORS
29 changes: 0 additions & 29 deletions prep/CHANGELOG.md

This file was deleted.

1 change: 1 addition & 0 deletions prep/CHANGELOG.md
176 changes: 0 additions & 176 deletions prep/LICENSE-APACHE

This file was deleted.

1 change: 1 addition & 0 deletions prep/LICENSE-APACHE
18 changes: 0 additions & 18 deletions prep/LICENSE-MIT

This file was deleted.

1 change: 1 addition & 0 deletions prep/LICENSE-MIT
Loading