mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-23 13:36:05 +00:00
feat(git-hooks): add pre-commit hook
Adds a pre-commit git hook to keep track of copyright year. Checks staged files for Arm copyright header and suggests a change if the year is outdated. Works with both single-year format and from_year-to_year format. Signed-off-by: Maksims Svecovs <maksims.svecovs@arm.com> Change-Id: If81a0b9f5e047ec0ac401c7cf1792b9da6644926
This commit is contained in:
parent
35f81474fb
commit
cf9346cb83
2 changed files with 63 additions and 0 deletions
6
.husky/pre-commit
Executable file
6
.husky/pre-commit
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# shellcheck source=./_/husky.sh
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
"$(dirname "$0")/pre-commit.copyright" "$@"
|
57
.husky/pre-commit.copyright
Executable file
57
.husky/pre-commit.copyright
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# A hook script that checks if files staged for commit have updated Arm copyright year.
|
||||||
|
# In case they are not - updates the years and prompts user to add them to the change.
|
||||||
|
# This hook is called on "git commit" after changes have been staged, but before commit
|
||||||
|
# message has to be provided.
|
||||||
|
|
||||||
|
RED="\033[00;31m"
|
||||||
|
YELLOW="\033[00;33m"
|
||||||
|
BLANK="\033[00;00m"
|
||||||
|
|
||||||
|
FILES=`git diff --cached --name-only HEAD`
|
||||||
|
YEAR_NOW=`date +"%Y"`
|
||||||
|
|
||||||
|
YEAR_RGX="[0-9][0-9][0-9][0-9]"
|
||||||
|
ARM_RGX="\(ARM\|Arm\|arm\)"
|
||||||
|
|
||||||
|
exit_code=0
|
||||||
|
|
||||||
|
function user_warning() {
|
||||||
|
echo -e "Copyright of $RED$FILE$BLANK is out of date"
|
||||||
|
echo -e "Updated copyright to"
|
||||||
|
grep -nr "opyright.*$YEAR_RGX.*$ARM_RGX" "$FILE"
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
while read -r FILE; do
|
||||||
|
if [ -z "$FILE" ]
|
||||||
|
then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
# Check if correct copyright notice is in file.
|
||||||
|
# To reduce false positives, we assume files with no
|
||||||
|
# copyright notice do not require it.
|
||||||
|
if ! grep "opyright.*$YEAR_NOW.*$ARM_RGX" "$FILE">/dev/null 2>&1
|
||||||
|
then
|
||||||
|
# If it is "from_date - to_date" type of entry - change to_date entry.
|
||||||
|
if grep "opyright.*$YEAR_RGX.*-.*$YEAR_RGX.*$ARM_RGX" "$FILE" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
exit_code=1
|
||||||
|
sed -i "s/\(opyright.*\)$YEAR_RGX\(.*$ARM_RGX\)/\1$(date +"%Y")\2/" $FILE
|
||||||
|
user_warning
|
||||||
|
# If it is single "date" type of entry - add the copyright extension to current year.
|
||||||
|
elif grep "opyright.*$YEAR_RGX.*$ARM_RGX" "$FILE" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
exit_code=1
|
||||||
|
sed -i "s/\(opyright.*$YEAR_RGX\)\(.*$ARM_RGX\)/\1-$(date +"%Y")\2/" $FILE
|
||||||
|
user_warning
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done <<< "$FILES"
|
||||||
|
|
||||||
|
if [ $exit_code -eq 1 ]
|
||||||
|
then
|
||||||
|
echo -e "$RED""Please stage updated files$BLANK before commiting or use$YELLOW git commit --no-verify$BLANK to skip copyright check"
|
||||||
|
fi
|
||||||
|
exit $exit_code
|
Loading…
Add table
Reference in a new issue