kubevela/hack/licence/header-check.sh

41 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# Easy & Dumb header check for CI jobs, currently checks ".go" files only.
#
# This will be called by the CI system (with no args) to perform checking and
# fail the job if headers are not correctly set. It can also be called with the
# 'fix' argument to automatically add headers to the missing files.
#
# Check if headers are fine:
# $ ./hack/header-check.sh
# Check and fix headers:
# $ ./hack/header-check.sh fix
set -e -o pipefail
# Initialize vars
ERR=false
FAIL=false
for file in $(git ls-files | grep "\.go$" | grep -v vendor/); do
echo -n "Header check: $file... "
if [[ -z $(cat ${file} | grep "Copyright [0-9]\{4\}\(-[0-9]\{4\}\)\?.\? The KubeVela Authors") && -z $(cat ${file} | grep "Copyright [0-9]\{4\} The Crossplane Authors") ]]; then
ERR=true
fi
if [ $ERR == true ]; then
if [[ $# -gt 0 && $1 =~ [[:upper:]fix] ]]; then
cat ../boilerplate.go.txt "${file}" > "${file}".new
mv "${file}".new "${file}"
echo "$(tput -T xterm setaf 3)FIXING$(tput -T xterm sgr0)"
ERR=false
else
echo "$(tput -T xterm setaf 1)FAIL$(tput -T xterm sgr0)"
ERR=false
FAIL=true
fi
else
echo "$(tput -T xterm setaf 2)OK$(tput -T xterm sgr0)"
fi
done
# If we failed one check, return 1
[ $FAIL == true ] && exit 1 || exit 0