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

#!/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