diff --git a/.githooks/commit-msg b/.githooks/commit-msg new file mode 100755 index 0000000..b5c5f08 --- /dev/null +++ b/.githooks/commit-msg @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +# Create a regex for a conventional commit. +convetional_commit_regex="^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\([a-z \-]+\))?!?: .+$" + +# Get the commit message (the parameter we're given is just the path to the +# temporary file which holds the message). +commit_message=$(cat "$1") + +# Check the message, if we match, all good baby. +if [[ "$commit_message" =~ $convetional_commit_regex ]]; then + echo -e "\e[32mCommit message meets Conventional Commit standards...\e[0m" + exit 0 +fi + +# Uh-oh, this is not a conventional commit, show an example and link to the spec. +echo -e "\e[31mThe commit message does not meet the Conventional Commit standard\e[0m" +echo "An example of a valid message is: " +echo " feat(login): add the 'remember me' button" +echo "More details at: https://www.conventionalcommits.org/en/v1.0.0/#summary" +exit 1 + + + diff --git a/.gitignore b/.gitignore index f86b9c0..8ac6c87 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,3 @@ !var/log/.gitkeep /tools .phpactor.json -composer.lock