Commit c75ce067 authored by Chris Kay's avatar Chris Kay
Browse files

build(hooks): add Commitizen hook



This change adds Commitizen, an interactive tool for writing commit
messages, to the package.json file. This installs Commitizen within the
`node_modules` directory automatically when developers invoke
`npm install` from the root repository directory.

Additionally, this change adds a prepare-commit-msg Git hook which
invokes Commitizen prior to generation of the default commit message.
It may be exited with the standard ^C signal without terminating the
commit process for those who desperately want to avoid using it, but
otherwise should encourage developers to conform to the new commit style
without running into post-commit linting errors.

Change-Id: I8a1e268ed40b61af38519d13d62b116fce76a494
Signed-off-by: default avatarChris Kay <chris.kay@arm.com>
parent 4b7eee81
{
"path": "./node_modules/cz-conventional-changelog",
"maxHeaderWidth": 50,
"maxLineWidth": 72
}
\ No newline at end of file
#!/bin/sh
# shellcheck source=./_/husky.sh
. "$(dirname "$0")/_/husky.sh"
"$(dirname "$0")/prepare-commit-msg.cz" "$@"
#!/bin/bash
file="$1"
type="$2"
if [ -z "$type" ]; then # only run on new commits
#
# Save any commit message trailers generated by Git.
#
trailers=$(git interpret-trailers --parse "$file")
#
# Execute the Commitizen hook.
#
(exec < "/dev/tty" && npx --no-install git-cz --hook) || true
#
# Restore any trailers that Commitizen might have overwritten.
#
printf "\n" >> "$file"
while IFS= read -r trailer; do
git interpret-trailers --in-place --trailer "$trailer" "$file"
done <<< "$trailers"
fi
This diff is collapsed.
......@@ -4,6 +4,8 @@
"postinstall": "husky install"
},
"devDependencies": {
"commitizen": "^4.2.2",
"cz-conventional-changelog": "^3.3.0",
"husky": "^5.0.4"
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment