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