3 unstable releases

0.1.1 Sep 30, 2024
0.1.0 Sep 30, 2024
0.0.1 Sep 28, 2024

#129 in Build Utils

Download history 156/week @ 2024-09-23 392/week @ 2024-09-30 35/week @ 2024-10-07

583 downloads per month

MIT/Apache

19KB
178 lines

husky-rs

CI Crates.io Documentation License

husky-rs is a Git hooks management tool for Rust projects, inspired by Husky.

Features

  • Easy setup and configuration
  • Automatic installation of Git hooks
  • Support for all Git hooks
  • Cross-platform compatibility (Unix-like systems and Windows)

Quick Start

  1. Add to your Cargo.toml:

    [dev-dependencies]
    husky-rs = "0.1.0"
    
  2. Create hooks directory:

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

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

    Note: Due to the execution mechanism of build.rs, running cargo clean is required when installing or updating hooks.

    cargo clean && 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 Git hooks, including:

  • pre-commit
  • prepare-commit-msg
  • commit-msg
  • post-commit
  • pre-push

For a full list, see the Git documentation.

Configuration

To skip hook installation:

CARGO_HUSKY_DONT_INSTALL_HOOKS=1 cargo build

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

Development

For information on setting up the development environment, running tests, and contributing to the project, please refer to our Development Guide.

Troubleshooting

If you encounter any issues while using husky-rs, please check our Troubleshooting Guide for common problems and their solutions. If you can't find a solution to your problem, please open an issue on our GitHub repository.

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