Skip to content

spencerdcarlson/husky-elixir

Repository files navigation

Husky

Mac/Linux Build Status Hex.pm Hex.pm

Git hooks made easy

Description

Husky is an elixir version of the husky npm module.

Husky can prevent bad git commit, git push and more 🐶 ❤️ woof!

Installation

The Husky Hex package can be installed by adding husky to your list of dependencies in mix.exs:

defp deps do
  [
    {:husky, "~> 1.0", only: :dev, runtime: false}
  ]
end

Usage

  • On compile, husky will install git hook scripts (mix husky.install to install manually)
  • Configure git hook commands in either your config/dev.exs or a .husky.json file
    • Note: config/dev.exs will take precedence over .husky.json if there are key conflicts
Configure Git Hooks Using config/config.exs:
use Mix.Config
config :husky,
    pre_commit: "mix format && mix credo --strict",
    pre_push: "mix format --check-formatted && mix credo --strict && mix test"

View example file config.example.exs

.husky.json

Configure Git Hooks Using .husky.json:
{
  "husky": {
    "hooks": {
      "pre_commit": "mix format && mix credo --strict",
      "pre_push": "mix format --check-formatted && mix credo --strict && mix test"
    }
  }
}

View example file .husky.example.json

With the above setup:

  • git commit will execute mix format and mix credo --strict and only commit if credo succeeds.
  • git push will execute mix format, mix credo, and mix test, and only push if all three commands succeed.
  • git commit --no-verify still commit even if mix credo --strict fails
Skip script install
export HUSKY_SKIP_INSTALL=true
Temporarily skip hooks
HUSKY_SKIP_HOOKS=true git rebase -i develop
Delete
  • Remove git hook scripts mix husky.delete

Documentation can found at https://hexdocs.pm/husky.

Contributing

See the development README.md