xref: /rk3399_ARM-atf/.husky/pre-commit.copyright (revision 6bb49c876c7593ed5f61c20ef3d989dcff8e8d8c)
1cf9346cbSMaksims Svecovs#!/bin/bash
2cf9346cbSMaksims Svecovs
3cf9346cbSMaksims Svecovs# A hook script that checks if files staged for commit have updated Arm copyright year.
4cf9346cbSMaksims Svecovs# In case they are not - updates the years and prompts user to add them to the change.
5cf9346cbSMaksims Svecovs# This hook is called on "git commit" after changes have been staged, but before commit
6cf9346cbSMaksims Svecovs# message has to be provided.
7cf9346cbSMaksims Svecovs
8cf9346cbSMaksims SvecovsRED="\033[00;31m"
9cf9346cbSMaksims SvecovsYELLOW="\033[00;33m"
10cf9346cbSMaksims SvecovsBLANK="\033[00;00m"
11cf9346cbSMaksims Svecovs
12cf9346cbSMaksims SvecovsFILES=`git diff --cached --name-only HEAD`
13cf9346cbSMaksims SvecovsYEAR_NOW=`date +"%Y"`
14cf9346cbSMaksims Svecovs
15cf9346cbSMaksims SvecovsYEAR_RGX="[0-9][0-9][0-9][0-9]"
16cf9346cbSMaksims SvecovsARM_RGX="\(ARM\|Arm\|arm\)"
17cf9346cbSMaksims Svecovs
18cf9346cbSMaksims Svecovsexit_code=0
19cf9346cbSMaksims Svecovs
20cf9346cbSMaksims Svecovsfunction user_warning() {
21*6bb49c87SMaksims Svecovs	echo -e "Copyright of $RED$FILE$BLANK is out of date/incorrect"
22cf9346cbSMaksims Svecovs	echo -e "Updated copyright to"
23cf9346cbSMaksims Svecovs	grep -nr "opyright.*$YEAR_RGX.*$ARM_RGX" "$FILE"
24cf9346cbSMaksims Svecovs	echo
25cf9346cbSMaksims Svecovs}
26cf9346cbSMaksims Svecovs
27cf9346cbSMaksims Svecovswhile read -r FILE; do
28cf9346cbSMaksims Svecovs	if [ -z "$FILE" ]
29cf9346cbSMaksims Svecovs	then
30cf9346cbSMaksims Svecovs		break
31cf9346cbSMaksims Svecovs	fi
32cf9346cbSMaksims Svecovs	# Check if correct copyright notice is in file.
33cf9346cbSMaksims Svecovs	# To reduce false positives, we assume files with no
34cf9346cbSMaksims Svecovs	# copyright notice do not require it.
35cf9346cbSMaksims Svecovs	if ! grep "opyright.*$YEAR_NOW.*$ARM_RGX" "$FILE">/dev/null 2>&1
36cf9346cbSMaksims Svecovs	then
37cf9346cbSMaksims Svecovs		# If it is "from_date - to_date" type of entry - change to_date entry.
38cf9346cbSMaksims Svecovs		if grep "opyright.*$YEAR_RGX.*-.*$YEAR_RGX.*$ARM_RGX" "$FILE" >/dev/null 2>&1
39cf9346cbSMaksims Svecovs		then
40cf9346cbSMaksims Svecovs			exit_code=1
41*6bb49c87SMaksims Svecovs			sed -i "s/\(opyright.*\)$YEAR_RGX\(.*$ARM_RGX\)/\1$(date +"%Y"), Arm/" $FILE
42cf9346cbSMaksims Svecovs			user_warning
43cf9346cbSMaksims Svecovs		# If it is single "date" type of entry - add the copyright extension to current year.
44cf9346cbSMaksims Svecovs		elif grep "opyright.*$YEAR_RGX.*$ARM_RGX" "$FILE" >/dev/null 2>&1
45cf9346cbSMaksims Svecovs		then
46cf9346cbSMaksims Svecovs			exit_code=1
47*6bb49c87SMaksims Svecovs			sed -i "s/\(opyright.*$YEAR_RGX\)\(.*$ARM_RGX\)/\1-$(date +"%Y"), Arm/" $FILE
48cf9346cbSMaksims Svecovs			user_warning
49cf9346cbSMaksims Svecovs		fi
50*6bb49c87SMaksims Svecovs	# Even if the year is correct - verify that Arm copyright is formatted correctly.
51*6bb49c87SMaksims Svecovs	elif grep "opyright.*\(ARM\|arm\)" "$FILE">/dev/null 2>&1
52*6bb49c87SMaksims Svecovs	then
53*6bb49c87SMaksims Svecovs		exit_code=1
54*6bb49c87SMaksims Svecovs		sed -i "s/\(opyright.*\)\(ARM\|arm\)/\1Arm/" $FILE
55*6bb49c87SMaksims Svecovs		user_warning
56cf9346cbSMaksims Svecovs	fi
57cf9346cbSMaksims Svecovsdone <<< "$FILES"
58cf9346cbSMaksims Svecovs
59cf9346cbSMaksims Svecovsif [ $exit_code -eq 1 ]
60cf9346cbSMaksims Svecovsthen
61cf9346cbSMaksims Svecovs	echo -e "$RED""Please stage updated files$BLANK before commiting or use$YELLOW git commit --no-verify$BLANK to skip copyright check"
62cf9346cbSMaksims Svecovsfi
63cf9346cbSMaksims Svecovsexit $exit_code
64