#!/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/incorrect"
	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"), Arm/" $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"), Arm/" $FILE
			user_warning
		fi
	# Even if the year is correct - verify that Arm copyright is formatted correctly.
	elif grep "opyright.*\(ARM\|arm\)" "$FILE">/dev/null 2>&1
	then
		exit_code=1
		sed -i "s/\(opyright.*\)\(ARM\|arm\)/\1Arm/" $FILE
		user_warning
	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
