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
|