diff --git a/scripts/check-licence-header.sh b/scripts/check-licence-header.sh index 784bf0e76fd0a8f6662868cbc23f24a1e2d0e115..df0a5d1b037ba948c3bb528c5dcc35f087a50b91 100755 --- a/scripts/check-licence-header.sh +++ b/scripts/check-licence-header.sh @@ -3,36 +3,47 @@ # SPDX-License-Identifier: GPL-3.0-only # First commited by Eoin Clerkin +RETURN_CODE="0" + licenceHeaderCheck () { - sed -n '2p' $1 | grep -L ' SPDX-License-Identifier: GPL-3.0-only' + + FILE_CODE="0"; + sed -n '2p' $1 | grep -q ' SPDX-License-Identifier: GPL-3.0-only' if [ $? -ne 0 ]; then - echo "[ERROR] Missing or Malformated licence header for file $FILE" - exit 11 + echo "[ERROR] $1, line 2 missing spdx licence header declaration." + ((RETURN_CODE++)) + FILE_CODE="1" fi - head -n 1 $1 | grep -L '\/\* Copyright (C) [0-9-]* .[a-zA-Z ]*, [a-zA-Z]*' + head -n 1 $1 | grep -q '\/\* Copyright (C) [0-9-]* [a-zA-Z -]*, [a-zA-Z]*' if [ $? -ne 0 ]; then - echo "[ERROR] $FILE; line 2 has syntax errors in its licence header." - exit 12 + echo "[ERROR] $1; line 1 has syntax errors in its licence header." + ((RETURN_CODE++)) + FILE_CODE="1" fi - sed -n '3p' $1 | grep -L ' Authors: .[^\*\/]*\*/' + sed -n '3p' $1 | grep -q ' Authors: .[^\*\/]*\*/' if [ $? -ne 0 ]; then - echo "[ERROR] $FILE; line 3 has syntax errors in its licence header." - exit 13 + echo "[ERROR] $1; line 3 has syntax errors in its licence header." + ((RETURN_CODE++)) + FILE_CODE="1" fi - sed -n '3p' $FILE | grep -L '\[committer\]' + sed -n '3p' $1 | grep -q '\[committer\]' if [ $? -ne 0 ]; then - echo "[ERROR] $FILE; line 3 has missing first commiter information." - exit 14 + echo "[ERROR] $1; line 3 has missing first commiter information." + ((RETURN_CODE++)) + FILE_CODE="1" + fi + + if [[ ${FILE_CODE} -eq 0 ]]; then + echo "[OK] File: $1 passes licence header check." fi - echo "[OK] File: $1 passes licence header check."; - } +} if [ $# -eq 1 ]; then - UPSTREAM=$1 +UPSTREAM=$1 else if [ -z $UPSTREAM ]; then UPSTREAM=$(git remote -v | grep git.cbm.gsi.de[:/]computing/cbmroot | cut -f1 | uniq) @@ -45,15 +56,28 @@ else fi fi -echo "See wikipage https://redmine.cbm.gsi.de/projects/cbmroot/wiki/Licence for information regarding the correct syntax used in the licence header." -echo "Upstream name is :" $UPSTREAM +if [ -f $1 ]; then +CHANGED_FILES="$1" +echo "LICENCE HEADER CHECK FOR FILE: $1" +else +echo "Upstream name is :" $UPSTREAM BASE_COMMIT=$UPSTREAM/master CHANGED_FILES=$(git diff --name-only $BASE_COMMIT | egrep '\.cxx$|\.h|\.C$') +fi + + for FILE in $CHANGED_FILES; do -licenceHeaderCheck $FILE + licenceHeaderCheck $FILE done -echo "[OK] Licence header passes automatic checks." -exit 0; +if [ $RETURN_CODE -eq "0" ]; then + echo "[OK] Licence header passes automatic checks." +else + echo "[FAIL] Visit https://redmine.cbm.gsi.de/projects/cbmroot/wiki/Licence for information on correct syntax for licence header." +fi + + + +exit $RETURN_CODE;