From 3ed463b8873b4a8facc1f487980b723ee838d64f Mon Sep 17 00:00:00 2001
From: Eoin Clerkin <e.clerkin@gsi.de>
Date: Tue, 14 Sep 2021 10:39:13 +0200
Subject: [PATCH] Fixes Bugs in automated licence header check

Corrects a variable typo which leads to some false positives

Allows passthrough of all files before trigger error code, to allow to see all files which don't obey header format.

Allows checking of individual files.
---
 scripts/check-licence-header.sh | 64 ++++++++++++++++++++++-----------
 1 file changed, 44 insertions(+), 20 deletions(-)

diff --git a/scripts/check-licence-header.sh b/scripts/check-licence-header.sh
index 784bf0e76f..df0a5d1b03 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;
-- 
GitLab