12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #!/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
- PLATPROV=
- ORG=`echo "$GIT_AUTHOR_EMAIL" | awk -F '[@]' '{ print $2;}'`
- case $ORG in
- amd.com)
- PLATPROV="Advanced Micro Devices, Inc. All rights reserved."
- ;;
- *arm.com)
- PLATPROV="$ARM_RGX"
- ;;
- *)
- ;;
- esac
- 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.*$PLATPROV" "$FILE"
- echo
- }
- while read -r FILE; do
- if [ -z "$FILE" ]
- then
- break
- fi
- # Check if copyright header exists for the org
- if ! grep "opyright.*$YEAR_RGX.*$PLATPROV" "$FILE">/dev/null 2>&1 && [[ $ORG != *arm* ]]
- then
- echo -e "Copyright header ""$RED""$PLATPROV""$BLANK"" is missing in ""$YELLOW""$FILE""$BLANK"
- fi
- # Check if the copyright year is updated for the org and update it
- if [ ! -z "$PLATPROV" ]
- then
- if ! grep "opyright.*$YEAR_NOW.*$PLATPROV" "$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.*$PLATPROV" "$FILE" >/dev/null 2>&1
- then
- exit_code=1
- sed -i "s/\(opyright.*\)$YEAR_RGX\(.*$PLATPROV\)/\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.*$PLATPROV" "$FILE" >/dev/null 2>&1
- then
- exit_code=1
- sed -i "s/\(opyright.*$YEAR_RGX\)\(.*$PLATPROV\)/\1-$(date +"%Y")\2/" $FILE
- user_warning
- fi
- # Even if the year is correct - verify that Arm copyright is formatted correctly.
- if [[ $ORG == *arm* ]]
- then
- if grep "opyright.*\(ARM\|arm\)" "$FILE">/dev/null 2>&1
- then
- exit_code=1
- sed -i "s/\(opyright.*\)\(ARM\|arm\)/\1Arm/" $FILE
- user_warning
- fi
- fi
- 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
|