12 unstable releases (3 breaking)
| 0.3.2 | Feb 11, 2026 |
|---|---|
| 0.2.2 | Jan 9, 2026 |
| 0.1.5 | Jun 3, 2025 |
| 0.1.3 | Dec 17, 2024 |
| 0.1.2 | Nov 21, 2024 |
#132 in Command line utilities
11,928 downloads per month
Used in 10 crates
(9 directly)
41KB
617 lines
husky-rs
husky-rs is a Git hooks management tool for Rust projects, inspired by Husky.
Features
- 🚀 Zero-configuration - Just add the dependency and create hooks
- ⚡ Automatic installation - Hooks configure on
cargo buildorcargo test - 🔄 Smart rerun detection - No need for
cargo cleanwhen updating hooks - 🎯 All 27 Git hooks supported - Client-side and server-side hooks
- 🌍 Cross-platform - Works on Unix-like systems and Windows
- 🛠️ Optional CLI tool -
husky init,husky add,husky listcommands - 📚 Optional library API - Helper functions for advanced use cases
Quick Start
-
Adding
husky-rsto your project:You have several options:
# Option 1: Add as a Regular Dependency cargo add husky-rs # Option 2: Add as a Dev Dependency cargo add --dev husky-rs # Option 3: Use the Main Branch cargo add --git https://github.com/pplmx/husky-rs --branch main cargo add --dev --git https://github.com/pplmx/husky-rs --branch main -
Create hooks directory:
mkdir -p .husky -
Add a hook (e.g.,
pre-commit):echo '#!/bin/sh\necho "Running pre-commit hook"' > .husky/pre-commit -
Install hooks:
cargo buildOr if you're using as a dev-dependency:
cargo test
Tip: If you add this library to the [dependencies] section, both cargo build and cargo test will work. However, if it's added under [dev-dependencies], only cargo test will function as expected.
Usage
Supported Git Hooks
husky-rs supports all standard Git hooks by setting core.hooksPath to .husky. This means you can also place helper scripts (e.g., .husky/_helpers.sh) in the same directory and source them from your hooks.
For a complete list, refer to the Git documentation.
If you encounter any unsupported hooks, please open an issue.
Configuration
To skip hook installation (useful in CI environments):
NO_HUSKY_HOOKS=1 cargo build
You can also set this in your environment or CI configuration.
Optional Tools
CLI Tool
For added convenience, install the husky command-line tool:
cargo install husky-rs
The CLI provides helpful commands:
husky init # Create .husky directory
husky add pre-commit # Add hook from smart template
husky list # List all installed hooks
husky help # Show help
Note: The CLI is completely optional - the core functionality works without it!
Library API
For advanced use cases, husky-rs exposes utility functions:
use husky_rs::{hooks_dir, should_skip_installation, is_valid_hook_name};
// Check if hook installation should be skipped
if !should_skip_installation() {
let hooks_path = hooks_dir(".");
println!("Hooks directory: {}", hooks_path.display());
}
// Validate a hook name
if is_valid_hook_name("pre-commit") {
println!("Valid hook!");
}
See API documentation for more details.
Note: You don't need to call any functions for basic usage - just add the dependency!
Best Practices
- Keep hooks lightweight to avoid slowing down Git operations
- Use hooks for tasks like running tests, linting code, and validating commit messages
- Non-zero exit status in a hook script will abort the Git operation
Documentation
📖 Complete guides for all users:
- Usage Guide - Installation, configuration, and advanced usage
- Examples - 13 ready-to-use hook examples
- Troubleshooting - Solutions to common issues
- Development - Contributing guide
Contributing
We welcome contributions! Please see our Contributing Guide for details on how to submit pull requests, report issues, or suggest improvements.
License
This project is 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.
Changelog
For a detailed history of changes to this project, please refer to our CHANGELOG.md.
Acknowledgments
- Inspired by cargo-husky
- Thanks to the Rust community for their amazing tools and libraries