j178 / pre-commit-rs

pre-commit re-implemented in Rust
MIT License
44 stars 3 forks source link

pre-commit-rs

Development Status CI

A reimplementation of the pre-commit tool in Rust, providing a faster and dependency-free alternative. It aims to be a drop-in replacement for the original tool while also providing some more advanced features.

[!WARNING] This project is still in very early development, only a few of the original pre-commit features are implemented. It is not recommended for normal use yet, but feel free to try it out and provide feedback.

Features

Installation

Standalone installer

pre-commit-rs provides a standalone installer script to download and install the tool:

# On Linux and macOS
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/pre-commit-rs/releases/download/v0.0.3/pre-commit-rs-installer.sh | sh

# On Windows
powershell -ExecutionPolicy ByPass -c "irm https://github.com/j178/pre-commit-rs/releases/download/v0.0.3/pre-commit-rs-installer.ps1 | iex"

PyPI

pre-commit-rs is published as Python binary wheel to PyPI under the name pre-commit-rusty, you can install it using pip, uv (recommended), or pipx:

pip install pre-commit-rusty

# or

uv tool install pre-commit-rusty

# or

pipx install pre-commit-rusty

Homebrew

brew install j178/tap/pre-commit-rs

Cargo

Build from source using Cargo:

cargo install --locked pre-commit-rs

Install from the binary directly using cargo binstall:

cargo binstall pre-commit-rs

GitHub Releases

pre-commit-rs release artifacts can be downloaded directly from the GitHub releases.

Usage

[!NOTE] The binary executable is named pre-commit (or pre-commit.exe on Windows) - without the -rs suffix. It should be available in your PATH after installation.

This tool is designed to be a drop-in replacement for the original pre-commit tool, so you can use it with your existing configurations and hooks.

Please refer to the official documentation for more information on how to configure and use pre-commit.

Acknowledgements

This project is heavily inspired by the original pre-commit tool, and it wouldn't be possible without the hard work of the maintainers and contributors of that project.

And a special thanks to the Astral team for their remarkable projects, particularly uv, from which I've learned a lot on how to write efficient and idiomatic Rust code.