#git #development-tools #git-hooks

bin+lib husky-rs

Git hooks manager for Rust projects - automatically install and manage Git hooks on build

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

Download history 99/week @ 2025-12-22 80/week @ 2025-12-29 135/week @ 2026-01-05 172/week @ 2026-01-12 134/week @ 2026-01-19 245/week @ 2026-01-26 615/week @ 2026-02-02 512/week @ 2026-02-09 270/week @ 2026-02-16 795/week @ 2026-02-23 1777/week @ 2026-03-02 3730/week @ 2026-03-09 4938/week @ 2026-03-16 2643/week @ 2026-03-23 2630/week @ 2026-03-30 1181/week @ 2026-04-06

11,928 downloads per month
Used in 10 crates (9 directly)

MIT/Apache

41KB
617 lines

husky-rs

CI Coverage Crates.io Documentation License

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 build or cargo test
  • 🔄 Smart rerun detection - No need for cargo clean when 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 list commands
  • 📚 Optional library API - Helper functions for advanced use cases

Quick Start

  1. Adding husky-rs to 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
    
  2. Create hooks directory:

    mkdir -p .husky
    
  3. Add a hook (e.g., pre-commit):

    echo '#!/bin/sh\necho "Running pre-commit hook"' > .husky/pre-commit
    
  4. Install hooks:

    cargo build
    

    Or 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:

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:

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

No runtime deps