xref: /rk3399_ARM-atf/.husky/pre-commit.copyright (revision 48461ec9397af0b3d675a3102a10e5bc5463d06f)
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
20*93d1f4bcSAkshay BelsarePLATPROV=
21*93d1f4bcSAkshay BelsareORG=`echo "$GIT_AUTHOR_EMAIL" | awk -F '[@]' '{ print $2;}'`
22*93d1f4bcSAkshay Belsare
23*93d1f4bcSAkshay Belsarecase $ORG in
24*93d1f4bcSAkshay Belsare	amd.com)
25*93d1f4bcSAkshay Belsare		PLATPROV="Advanced Micro Devices, Inc. All rights reserved."
26*93d1f4bcSAkshay Belsare		;;
27*93d1f4bcSAkshay Belsare	*arm.com)
28*93d1f4bcSAkshay Belsare		PLATPROV="$ARM_RGX"
29*93d1f4bcSAkshay Belsare		;;
30*93d1f4bcSAkshay Belsare	*)
31*93d1f4bcSAkshay Belsare		;;
32*93d1f4bcSAkshay Belsareesac
33*93d1f4bcSAkshay Belsare
34cf9346cbSMaksims Svecovsfunction user_warning() {
356bb49c87SMaksims Svecovs	echo -e "Copyright of $RED$FILE$BLANK is out of date/incorrect"
36cf9346cbSMaksims Svecovs	echo -e "Updated copyright to"
37*93d1f4bcSAkshay Belsare	grep -nr "opyright.*$YEAR_RGX.*$PLATPROV" "$FILE"
38cf9346cbSMaksims Svecovs	echo
39cf9346cbSMaksims Svecovs}
40cf9346cbSMaksims Svecovs
41cf9346cbSMaksims Svecovswhile read -r FILE; do
42cf9346cbSMaksims Svecovs	if [ -z "$FILE" ]
43cf9346cbSMaksims Svecovs	then
44cf9346cbSMaksims Svecovs		break
45cf9346cbSMaksims Svecovs	fi
46*93d1f4bcSAkshay Belsare
47*93d1f4bcSAkshay Belsare	# Check if copyright header exists for the org
48*93d1f4bcSAkshay Belsare	if ! grep "opyright.*$YEAR_RGX.*$PLATPROV" "$FILE">/dev/null 2>&1 && [[ $ORG != *arm* ]]
49*93d1f4bcSAkshay Belsare	then
50*93d1f4bcSAkshay Belsare		echo -e "Copyright header ""$RED""$PLATPROV""$BLANK"" is missing in ""$YELLOW""$FILE""$BLANK"
51*93d1f4bcSAkshay Belsare	fi
52*93d1f4bcSAkshay Belsare
53*93d1f4bcSAkshay Belsare	# Check if the copyright year is updated for the org  and update it
54*93d1f4bcSAkshay Belsare	if [ ! -z "$PLATPROV" ]
55*93d1f4bcSAkshay Belsare	then
56*93d1f4bcSAkshay Belsare		if ! grep "opyright.*$YEAR_NOW.*$PLATPROV" "$FILE">/dev/null 2>&1
57cf9346cbSMaksims Svecovs		then
58cf9346cbSMaksims Svecovs			# If it is "from_date - to_date" type of entry - change to_date entry.
59*93d1f4bcSAkshay Belsare			if grep "opyright.*$YEAR_RGX.*-.*$YEAR_RGX.*$PLATPROV" "$FILE" >/dev/null 2>&1
60cf9346cbSMaksims Svecovs			then
61cf9346cbSMaksims Svecovs				exit_code=1
62*93d1f4bcSAkshay Belsare				sed -i "s/\(opyright.*\)$YEAR_RGX\(.*$PLATPROV\)/\1$(date +"%Y")\2/" $FILE
63cf9346cbSMaksims Svecovs				user_warning
64cf9346cbSMaksims Svecovs			# If it is single "date" type of entry - add the copyright extension to current year.
65*93d1f4bcSAkshay Belsare			elif grep "opyright.*$YEAR_RGX.*$PLATPROV" "$FILE" >/dev/null 2>&1
66cf9346cbSMaksims Svecovs			then
67cf9346cbSMaksims Svecovs				exit_code=1
68*93d1f4bcSAkshay Belsare				sed -i "s/\(opyright.*$YEAR_RGX\)\(.*$PLATPROV\)/\1-$(date +"%Y")\2/" $FILE
69cf9346cbSMaksims Svecovs				user_warning
70cf9346cbSMaksims Svecovs			fi
71*93d1f4bcSAkshay Belsare
726bb49c87SMaksims Svecovs			# Even if the year is correct - verify that Arm copyright is formatted correctly.
73*93d1f4bcSAkshay Belsare			if [[ $ORG == *arm* ]]
74*93d1f4bcSAkshay Belsare			then
75*93d1f4bcSAkshay Belsare				if grep "opyright.*\(ARM\|arm\)" "$FILE">/dev/null 2>&1
766bb49c87SMaksims Svecovs				then
776bb49c87SMaksims Svecovs					exit_code=1
786bb49c87SMaksims Svecovs					sed -i "s/\(opyright.*\)\(ARM\|arm\)/\1Arm/" $FILE
796bb49c87SMaksims Svecovs					user_warning
80cf9346cbSMaksims Svecovs				fi
81*93d1f4bcSAkshay Belsare			fi
82*93d1f4bcSAkshay Belsare		fi
83*93d1f4bcSAkshay Belsare	fi
84*93d1f4bcSAkshay Belsare
85cf9346cbSMaksims Svecovsdone <<< "$FILES"
86cf9346cbSMaksims Svecovs
87cf9346cbSMaksims Svecovsif [ $exit_code -eq 1 ]
88cf9346cbSMaksims Svecovsthen
89cf9346cbSMaksims Svecovs	echo -e "$RED""Please stage updated files$BLANK before commiting or use$YELLOW git commit --no-verify$BLANK to skip copyright check"
90cf9346cbSMaksims Svecovsfi
91cf9346cbSMaksims Svecovsexit $exit_code
92