You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							147 lines
						
					
					
						
							7.2 KiB
						
					
					
				
			
		
		
	
	
							147 lines
						
					
					
						
							7.2 KiB
						
					
					
				#!/bin/bash
 | 
						|
 | 
						|
# This script is designed to ensure all relevant header and source files contain correct copyright
 | 
						|
 | 
						|
set +e
 | 
						|
 | 
						|
sudo apt-get install dos2unix
 | 
						|
 | 
						|
ok=0
 | 
						|
fixed=0
 | 
						|
 | 
						|
function check_folder {
 | 
						|
    for filename in $(find $1 -type f \( -iname \*.cpp -o -iname \*.h -o -iname \*.hpp -o -iname \*.js -o -iname \*.bat -o -iname \*.sh -o -iname \*.txt \)); do
 | 
						|
          if [[ $(grep -oP "Software License Agreement" $filename | wc -l) -ne 0 ]]; then
 | 
						|
               echo "[WARNING] $filename contains 3rd-party license agreement"
 | 
						|
          else
 | 
						|
               if [[ ! $filename == *"usbhost"* ]]; then
 | 
						|
                    # Only check files that are not .gitignore-d
 | 
						|
                    if [[ $(git check-ignore $filename | wc -l) -eq 0 ]]; then
 | 
						|
                         if [[ $(grep -oP "(?<=\(c\) )(.*)(?= Intel)" $filename | wc -l) -eq 0 ]]; then
 | 
						|
                              echo "[ERROR] $filename is missing the copyright notice"
 | 
						|
                              ok=$((ok+1))
 | 
						|
 | 
						|
                              if [[ $2 == *"fix"* ]]; then
 | 
						|
                                   if [[ $(date +%Y) == "2019" ]]; then
 | 
						|
                                        if [[ $filename == *".hpp"* ]]; then
 | 
						|
                                             echo "Trying to auto-resolve...";
 | 
						|
                                             ex -sc '1i|// Copyright(c) 2019 Intel Corporation. All Rights Reserved.' -cx $filename
 | 
						|
                                             fixed=$((fixed+1))
 | 
						|
                                        fi
 | 
						|
                                        if [[ $filename == *".cpp"* ]]; then
 | 
						|
                                             echo "Trying to auto-resolve...";
 | 
						|
                                             ex -sc '1i|// Copyright(c) 2019 Intel Corporation. All Rights Reserved.' -cx $filename
 | 
						|
                                             fixed=$((fixed+1))
 | 
						|
                                        fi
 | 
						|
                                        if [[ $filename == *".h"* ]]; then
 | 
						|
                                             echo "Trying to auto-resolve...";
 | 
						|
                                             ex -sc '1i|/* Copyright(c) 2019 Intel Corporation. All Rights Reserved. */' -cx $filename
 | 
						|
                                             fixed=$((fixed+1))
 | 
						|
                                        fi
 | 
						|
                                        if [[ $filename == *".js"* ]]; then
 | 
						|
                                             echo "Trying to auto-resolve...";
 | 
						|
                                             ex -sc '1i|// Copyright(c) 2019 Intel Corporation. All Rights Reserved.' -cx $filename
 | 
						|
                                             fixed=$((fixed+1))
 | 
						|
                                        fi
 | 
						|
                                        if [[ $filename == *".txt"* ]]; then
 | 
						|
                                             echo "Trying to auto-resolve...";
 | 
						|
                                             ex -sc '1i|# Copyright(c) 2019 Intel Corporation. All Rights Reserved.' -cx $filename
 | 
						|
                                             fixed=$((fixed+1))
 | 
						|
                                        fi
 | 
						|
                                   else
 | 
						|
                                        echo Please update pr_check to auto-resolve missing copyright
 | 
						|
                                   fi
 | 
						|
                              fi
 | 
						|
                         fi
 | 
						|
 | 
						|
                         if [[ $(grep -oP "Apache 2.0" $filename | wc -l) -eq 0 ]]; then
 | 
						|
                              echo "[ERROR] $filename is missing license notice"
 | 
						|
                              ok=$((ok+1))
 | 
						|
 | 
						|
                              if [[ $2 == *"fix"* ]]; then
 | 
						|
                                   if [[ $filename == *".hpp"* ]]; then
 | 
						|
                                        echo "Trying to auto-resolve...";
 | 
						|
                                        ex -sc '1i|// License: Apache 2.0. See LICENSE file in root directory.' -cx $filename
 | 
						|
                                        fixed=$((fixed+1))
 | 
						|
                                   fi
 | 
						|
                                   if [[ $filename == *".cpp"* ]]; then
 | 
						|
                                        echo "Trying to auto-resolve...";
 | 
						|
                                        ex -sc '1i|// License: Apache 2.0. See LICENSE file in root directory.' -cx $filename
 | 
						|
                                        fixed=$((fixed+1))
 | 
						|
                                   fi
 | 
						|
                                   if [[ $filename == *".h"* ]]; then
 | 
						|
                                        echo "Trying to auto-resolve...";
 | 
						|
                                        ex -sc '1i|/* License: Apache 2.0. See LICENSE file in root directory. */' -cx $filename
 | 
						|
                                        fixed=$((fixed+1))
 | 
						|
                                   fi
 | 
						|
                                   if [[ $filename == *".js"* ]]; then
 | 
						|
                                        echo "Trying to auto-resolve...";
 | 
						|
                                        ex -sc '1i|// License: Apache 2.0. See LICENSE file in root directory.' -cx $filename
 | 
						|
                                        fixed=$((fixed+1))
 | 
						|
                                   fi
 | 
						|
                                   if [[ $filename == *".txt"* ]]; then
 | 
						|
                                        echo "Trying to auto-resolve...";
 | 
						|
                                        ex -sc '1i|# License: Apache 2.0. See LICENSE file in root directory.' -cx $filename
 | 
						|
                                        fixed=$((fixed+1))
 | 
						|
                                   fi
 | 
						|
                              fi
 | 
						|
                         fi
 | 
						|
 | 
						|
                         if [[ $(grep -o -P '\t' $filename | wc -l) -ne 0 ]]; then
 | 
						|
                              echo "[ERROR] $filename has tabs (this project is using spaces as delimiters)"
 | 
						|
                              ok=$((ok+1))
 | 
						|
 | 
						|
                              if [[ $2 == *"fix"* ]]; then
 | 
						|
                                   echo "Trying to auto-resolve...";
 | 
						|
                                   sed -i.bak $'s/\t/    /g' $filename
 | 
						|
                                   fixed=$((fixed+1))
 | 
						|
                              fi
 | 
						|
                         fi
 | 
						|
 | 
						|
                         if [[ $(file ${filename} | grep -o -P 'CRLF' | wc -l) -ne 0 ]]; then
 | 
						|
                              echo "[ERROR] $filename is using DOS line endings (this project is using Unix line-endings)"
 | 
						|
                              ok=$((ok+1))
 | 
						|
 | 
						|
                              if [[ $2 == *"fix"* ]]; then
 | 
						|
                                   echo "Trying to auto-resolve...";
 | 
						|
                                   dos2unix $filename
 | 
						|
                                   fixed=$((fixed+1))
 | 
						|
                              fi
 | 
						|
                         fi
 | 
						|
                    fi
 | 
						|
               fi
 | 
						|
          fi
 | 
						|
     done
 | 
						|
}
 | 
						|
 | 
						|
if [[ $1 == *"help"* ]]; then
 | 
						|
     echo Pull-Request Check tool
 | 
						|
     echo "Usage: (run from repo scripts directory)"
 | 
						|
     echo "    ./pr_check.sh [--help] [--fix]"
 | 
						|
     echo "    --fix    Try to auto-fix defects"
 | 
						|
     exit 0
 | 
						|
fi
 | 
						|
 | 
						|
cd ..
 | 
						|
check_folder CMake $1
 | 
						|
check_folder common $1
 | 
						|
check_folder include $1
 | 
						|
check_folder src $1
 | 
						|
check_folder examples $1
 | 
						|
check_folder third-party/realdds $1
 | 
						|
check_folder third-party/rsutils $1
 | 
						|
check_folder tools $1
 | 
						|
cd scripts
 | 
						|
 | 
						|
if [[ ${fixed} -ne 0 ]]; then
 | 
						|
     echo "Re-running pr_check..."
 | 
						|
     ./pr_check.sh
 | 
						|
else
 | 
						|
     if [[ ${ok} -ne 0 ]]; then
 | 
						|
          echo Pull-Request check failed, please address ${ok} the errors reported above
 | 
						|
          exit 1
 | 
						|
     fi
 | 
						|
fi
 | 
						|
 | 
						|
exit 0
 |